类型转换
static_cast
static_cast主要用于不同类型变量之间的转换及左值转右值等.
1 | //不同类型之间的转换 |
而对于类对象来说,static_cast不能直接将一种类对象转成另一种类对象。但你可以利用static_cast将基类指针/引用转成子类指针/引用.(父子关系的类之间才可以做如上转换,否则编译失败)
1 | class A{ |
static_cast不允许不同类型之间指针/引用的转换(有父子关系的类对象除外)
指针和引用的转换不能用static_cast,而应该用reinterpret_cast。
reinterpret_cast
1 | ... |
reinterpret_cast是对指针/引用的转换,其中必须至少有一个是指针或引用,否则它会报错。
const_cast
去掉指针/引用中的const限制。这里要注意的是被转换的一定是指针/引用的const,而常数的const是不能去掉的。
1 | ... 可以 |
const_cast是一个专门去掉同一类型的const限制的类型转换方法
dynamic_cast
一、它只能处理类对象;二、它只能处理指针;三、它只能用于将子对象转换成父对象这样的操作。
1 | ... |