用几个方法,最常用的方法是 dynamic_cast
class Base
{
};
class Test : public Base
{
};
void test(Base* p)
{
Test* t = dynamic_cast(p);
if (t != NULL) { // 转换成功,是子类
...
}
}
还有一个方法,自己实现classname的方法,好处是可以降低耦合,高级编程中用的比较多
class Base
{
public:
virtual std::string getClassName() const
{
return "Base";
}
};
class Test : public Base
{
public:
virtual std::string getClassName() const
{
return "Test";
}
};
void test(Base* p)
{
if (p->getClassName() == "Test") { // 是Test子类
...
}
}