类型隐式转换:

(1).发生隐式转换

double d;
d=1.8*3;

(2).赋值表达式,=右边表达式的值自动转换为左边变量的类型,再将值赋值给左边的变量。(注意,这种写法易带来精度损失

double d=1.8;
int a=d;

(3).函数调用时,如果实参和形参的类型不一样,系统将实参转换为形参后再进行传值,这里隐含的转换通常是低类型转换为高类型。

void test(double d);
func(10); //这里的10转换为double类型

(4).函数有返回值时候

int func();
double a=func(); //返回值由int类型转换为double类型

一般数据类型转换为类类型

class stu
{
public:
stu();
stu(int a);
void print();
private:
int d;
};
stu::stu()
{
cout << "这是无参构造函数" << endl;
}
stu::stu(int a)
{
d = a;
}
void stu::print()
{
cout << "d=" << d << endl;
}
int main()
{
stu p;
p = 100;
p.print();
return 0;
}

这里100先转换为stu类型,然后赋值给p。

类类型到一般数据的转换:

一般形式:

operator <数据类型说明符>()
{
//函数体
}

<数据类型说明符>是类类型所要转换的数据类型。该函数不需要参数,也不需要返回值。

例:

类的类型转换_数据类型

还有一点就是,利用operator进行多个数据转换的时候,出现二义性。可以利用static_cast<数据类型>进行强制转换。

类的类型转换_数据类型_02


如有不对,欢迎指正。