<1>static_cast<目标类型>编译期检查,父子类关系可以转换
<2>dynamic_cast<目标类型>运行期检查,明确基类指针指向子类引用,转为子类指针安全
<3>reinterpret_cast<目标类型>编译期和运行期都不检查,而且永远可以转换成功
<4>const_cast<目标类型>把const类型的指针变为非const类型的指针
const int *fun(int, int){}
int* ptr = const_cast<int*>(fun(2, 3));
<5>类型转换操作符 operator 目标类型(void)
class Point3D;
class Point2D
{
public:
Point2D(int x = 0, int y = 0):m_x(x),m_y(y){}
operator Point3D(void);
private:
int m_x, m_y;
};
Point2D::operator Point3D(void)//此函数需要放在Point3D类声明的后面
{
return Point3D(m_x, m_y, 0);
}
explicit显示调用限定符