数据类型转换在程序编译时或在程序运行实现
基本类型 ←→ 基本类型
基本类型 ←→ 类类型
类类型 ←→ 类类型
类对象的类型转换可由两种方式说明:
构造函数 转换函数
称为用户定义的类型转换或类类型转换,有隐式调用和显式调用方式
1 class X 2 { // …… 3 public : 4 X ( int ) ; 5 X ( const char * , int = 0 ) ; 6 }; 7 void f ( X arg ) ; 8 : 9 X a = X( 1 ) ; // a = 1,调用构造函数X(int),把1转换成X类类型后赋给对象a,也称X(1)为类X的类型常量 10 X b = "Jessie" ; // b = X ( "Jessie" , 0 ),调用构造函数X(const char*,int =0),把字符串转换成X类类型后,赋给b; 11 a = 2 ; // a = X ( 2 ),隐式调用构造函数X(int),把2转换成X类类型之后赋给对象a, 12 f ( 3 ) ; // f ( X ( 3 ) ),隐式调用构造函数X(int),对实参做类类型转换,然后进行参数结合 13 f ( 10 , 20 ) ; // error ,找不到匹配的构造函数,转换失败
//注:这样的转换都是由系统自动完成的
2.类类型转换函数:
带参数的构造函数不能把一个类类型转换成基本类型
类类型转换函数是一种特殊的成员函数,提供类对象之间
显式类型转换的机制
语法形式:
X :: operator T ( )
{ ……
return T 类型的对象
}
功能:将类型 X 的对象转换为类型 T 的对象
- T 可以是预定义类型,也可以是用户定义类型
· 函数没有参数,没有返回类型,但必须有一条 return 语句,返回
T 类型的对象
- 该函数只能为成员函数,不能为友元