标准数据类型之间会进行隐式的类型安全转换
转换规则如下
char ->short
char/short ->int ->unsigned int -> long ->unsigned long ->float ->double
char+short -> int
再论构造函数
构造函数可以定义不同类型的参数
参数满足下列条件时称为转换构造函数
有且仅有一个参数
参数是基本类型
参数是其它类类型
编译器的行为
工程中通过explicit关键字杜绝编译器的转换尝试
转换构造函数被explicit修饰时只能进行显示转换
转换方式
static_cast<ClassName>(value);
ClassName(value);
(ClassName)value;//不推荐
类型转换函数
c++类中可以定义类型转换函数
类型转换函数用于将类对象转换为其它类型
语法规则:
operator Type ()
{
Type ret;
//...
return ret;
}
与转换构造函数具有同等的地位
使得编译器有能力将对象转换为其它类型
编译器能够隐式的使用类型转换函数
无法抑制隐式的类型转换函数调用
类型转换函数可能与转换构造函数冲突
工程中以Type toType()的公有成员代替类型转换函数