如何判断基类指针指向的派生类是否相同
时间: 2023-09-11 09:10:55 浏览: 31
详解C++中基类与派生类的转换以及虚基类
可以使用dynamic_cast运算符将基类指针转换为派生类指针,如果转换成功,则说明基类指针指向的派生类与我们要比较的派生类是同一个类,否则指向的是不同的派生类。例如:
```
class Base { ... };
class Derived1 : public Base { ... };
class Derived2 : public Base { ... };
void func(Base* ptr) {
if (Derived1* d1 = dynamic_cast<Derived1*>(ptr)) {
// ptr指向Derived1
} else if (Derived2* d2 = dynamic_cast<Derived2*>(ptr)) {
// ptr指向Derived2
} else {
// ptr指向其他类型
}
}
```
在这个例子中,如果ptr指向Derived1,则dynamic_cast返回一个Derived1指针,判断为真;如果ptr指向Derived2,则dynamic_cast返回一个空指针,判断为假;如果ptr指向其他类型,则dynamic_cast返回一个空指针,同样判断为假。
阅读全文