C++中的转换构造函数与类型转换运算符
隐式类型转换
C++的内置类型之间会进行隐式的类型转换
- char、short、int、long四个类型混合运算时,较小的(占用字节数小)整数类型会被自动提升为较大的(占用字节数大)整数类型,以确保不会丢失精度
- signed类型和unsigned类型混合运算的结果是unsigned类型
- 整型(char、short、int、long)和浮点类型(float、double)混合运算时,会自动提升为浮点类型;较短的浮点数类型(如float)会被自动提升为更长的浮点数类型(如double)以进行混合运算,以确保不会丢失精度
自定义的类类型转换
C++提供转换构造函数、类型转换运算符函数这两种成员函数来支持类类型的类型转换
转换构造函数
将其他类型的对象转换为本类对象
特点
- 属于构造函数的一种,没有返回值,函数名和类名一样
- 只有一个形参,或其他形参都有默认值
- 形参类型可以是内置类型,也可以是其他类类型
- 可以使用关键字 explicit 限制隐式转换
使用
1 | class MyClass { |
类型转换运算符函数
将类对象转换为其他类型对象
特点
- 函数原型没有返回值、没有参数
- 函数名为关键字
operator 类型
(类型为要转换的类型) - 必须要有return语句,return的类型就是要转换为的类型
- 转换为的类型可以是内置类型,也可以是其他类类型
使用
1 | class MyClass { |