【C++】如何判断类型
typeid的缺点
typeid对多态的情况不支持
#include <iostream>class Parent
{
public:Parent() {}
private:int a = 0;
};class Child :public Parent
{
public :Child() {}
private:int b = 0;
};int main()
{Parent* obj1 = new Child();Parent* pobj1 = obj1;std::cout << typeid(*obj1).name() << std::endl; //输出 class Parentstd::cout << typeid(*pobj1).name() << std::endl; //输出 class Parentreturn 1;
}
dynamic_cast
dynamic_cast<Child*>(pParent)尝试将一个基类指针转换为派生类指针,如果成功,返回指向该对象的派生类指针,失败返回nullptr。
缺点
dynamic_cast只支持多态的情况,即基类必须有虚函数