C++类型转换运算符
- dynamic_cast
- const_cast
- static_cast
- reinterpert_cast
1. dynamic_cast
这个运算符在RTTI中聊过,适用于有虚函数的继承。它用于继承链中的指针安全的进行转换。
可以将一个指向派生类的基类指针转换为派生类指针;如果进行不安全的转换,例如,转换后派生类的指针指向了基类对象,这样的转换就是不安全的,这样运算符会返回null。
举个例子:
//pDerived是一个派生类指针,pBase是一个基类指针
pDerived = dynamic_cast<Derived *>(pBase);
2.const_cast
可以修改一个指针的常量属性,也就是说,将一个const指针的值赋给一个非const指针。
举个例子:
const int *pa = new int;
int *pb = const_cast<int *>(pa); //通过运算符转换
//或者也可以这样
int *pp = (int *)pa; //强制类型转换
一个const指针不可以赋给一个非const指针,如果必须要赋值,就要进行类型转换。
当然,可以通过强制类型转换,另一个方法就是使用const_cast运算符,使用运算符更加安全。
3.static_cast
static_cast (expression);
仅当TypeName可以隐式的转换为expression&#