win7网站建设,政务网站集约化建设,抖音代运营是什么,wordpress二维码插件付费目录 一、类型转换
二、转换函数 一、类型转换 C⽀持内置类型隐式类型转换为类类型对象#xff0c;需要有相关内置类型为参数的构造函数 简单说就是可以将内置类型转化为自定义类型 示例#xff1a; class Test
{
public:Test(int n1 0):num1(n1){}void pr…目录 一、类型转换
二、转换函数 一、类型转换 C⽀持内置类型隐式类型转换为类类型对象需要有相关内置类型为参数的构造函数 简单说就是可以将内置类型转化为自定义类型 示例 class Test
{
public:Test(int n1 0):num1(n1){}void print(){cout num1 endl;}
private:int num1;
}; int main()
{Test t1(100);t1.print();//C⽀持内置类型隐式类型转换为类类型对象Test t2 100;t2.print();return 0;
} 结果 程序将使用构造函数【Test ( int n1 )】 来创建一个临时的【Test】对象并将【100】作为初始值。随后在使用默认的拷贝构造函数将内容拷贝到【t2】中。这一过程称为隐式类型转换 一个参数就要有一个参数的构造函数 二个参数就要有二个参数的构造函数 示例
class Test
{
public:Test(int n1 0, int n2 0):num1(n1),num2(n2){}void print(){cout num1 num2 endl;}
private:int num1;int num2;
};
int main()
{Test t1(100, 200);t1.print();//C⽀持内置类型隐式类型转换为类类型对象Test t2 { 100,200 };t2.print();return 0;
} 将构造函数用于类型转换似乎是一项不错的特性但是这种特性并非总是合乎需要因此这总有可能导致意外发生 C新增了一个关键字【explicit】用于关闭将构造函数用于类型转换 示例
class Test
{
public://explicit用于关闭将构造函数用于类型转换explicit Test(int n1 0):num1(n1){}
private:int num1;
};
Test t 100; 会报错 如果使用了【explicit】限定了构造函数规定它不可以用于隐式转换但是它可以用于显示转换 示例
class Test
{
public://explicit用于关闭将构造函数用于类型转换explicit Test(int n1 0):num1(n1){}void print(){cout num1 endl;}
private:int num1;
};
int main()
{//explicit限定了构造函数规定它不可以用于隐式转换但是它可以用于显示转换 Test t (Test)100;t.print();return 0;
} 结果 二、转换函数 既然内置类型可以转换为自定义类型那么自定义类型可以转换为内置类型吗 自定义类型是可以转换为内置类型但是不是使用构造函数。要进行自定义类型转换为内置类型必须要使用特殊的C运算符函数——转换函数 示例
class Test
{
public:Test(int n1 0):num1(n1){}//转换函数operator int() const{return num1;}
private:int num1;
};
int main()
{Test t1 100;int num t1;cout num endl;return 0;
} 结果 转换函数的特点 转换函数必须是类方法转换函数不能指定返回值转换函数不能有参数 转换函数的形式 operator typename ( ); 【typename】指出了要转换的类型因此不需要指定返回值类型。转换函数是类方法意味着它需要通过类对象来调用从而告知函数要转换的值。因此函数不需要参数