类型转换
- c++允许在类和基本类型之间转换。
- 类似于调用有参构造函数。
- 任何接收唯一一个参数的构造函数可以被用作转换函数,将类型与该参数相同的值转换为类。
- 如果将类型与该参数相同的值赋给对象,则c++自动调用该构造函数。
String bean = "pinto"; / converts type char * to type String
- 如果使用explicit关键字,只能用于显式转换。
Stonewt myCat; / create a Stonewt object
myCat = 19.6;/ 隐式转换
mycat = Stonewt(19.6); / 显式转换
mycat = (Stonewt) 19.6; / ok, old form for explicit typecast
转换函数
- 从类类型转换到其他类型,使用转换函数,必须是成员函数。
- 格式:operate 数据类型();
1.转换函数必须是类方法
2.不能指定返回类型,但必须返回转换后的值。
3.不能有参数 - 最好将运算符声明为显式的:
class Stonewt
{
...
/ conversion functions
explicit operator int() const;
explicit operator double() const;
};
Stonewt::operator int() const
{
return int (pounds + 0.5);
}
Stonewt::operator double()const
{
return pounds;
}
Stonewt wolfe(285.7);
double host = double (wolfe);
double thinker = (double) wolfe;
Stonewt wells(20, 3);
double star = wells; / implicit use of conversion function