C++支持运行期类型识别(RTTI)运行期类型识别提供以下功能:
在运行期对类型转换操作进行检查
在运行期确定对象类型
扩展C++提供的RTTI
一、在运行期对类型转换操作进行检查:dynamic_cast和static_cast操作符
在C++中,编译期合法的类型转换操作可能会在运行期发生错误,当转型操作数据对象指针或引用时,更易发生错误。
先对static_cast的类型转换检查进行说明
class B{};
class D : public B(){};
int main(){
D* p;
p=new B;
p=static_cast<D*>(new B);
}
以上代码中,p为D*类型指针,即指向派生类的指针,p=new B;会发生编译错误,因为没有将p转换为基类指针,就为它赋了一个基类对象的指针,但p=static_cast<D*>(new B);不会发生编译错误,因为使用static_cast将p转成了基类指针。
class B{
public:
void f(){}
};
class D : public B(){
void m(){}
};
int main(){
D* p;
p=static_cast<