第1部分.隐式类型转换
又称为“标准转换”,包括以下几种情况:
1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。
intival=3;doubledval=3.14159;ival+dval;//ival被提升为double类型
2)一种类型表达式赋值给另一种类型的对象:目标类型是被赋值对象的类型
int*pi=0;//0被转化为int*类型
ival=dval;//double->int
例外:void指针赋值给其他指定类型指针时,不存在标准转换,编译出错
3)将一个表达式作为实参传递给函数调用,此时形参和实参类型不一致:目标转换类型为形参的类型
externdoublesqrt(double);
cout<<"Thesquarerootof2is"<<sqrt(2)<<endl;
//2被提升为double类型:2.0
4)从一个函数返回一个表达式,表达式类型与返回类型不一致:目标转换类型为函数的返回类型
doubledifference(intival1,intival2){returnival1-ival2;//返回值被提升为double类型}
第2部分. 显式类型转换
被称为“强制类型转换”(cast)
C 风格: (type-id)
C++风格:static_cast、dynamic_cast、reinterpret_cast、和const_cast..