类的类型转换
类型隐式转换:(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<数据类型>进行强制转换。
如有不对,欢迎指正。
https://blog.51cto.com/u_15363771/4755709
页:
[1]