如何对父类指针和子类指针进行判断
时间: 2023-11-02 18:16:50 浏览: 150
判断一个指针是否指向一个父类或子类的对象,可以使用动态类型识别(dynamic cast)运算符。动态类型识别运算符可以在运行时确定一个指针的实际类型。
具体来说,我们可以使用 dynamic_cast 运算符将一个指向父类的指针转换为子类指针。如果转换成功,说明该指针指向的对象是一个子类对象,否则说明该指针指向的是一个父类对象。
例如,假设有一个 Animal 类和一个 Cat 类继承自 Animal 类:
```
class Animal {
public:
virtual ~Animal() {}
};
class Cat : public Animal {
public:
void meow() {}
};
```
现在我们定义一个指向 Animal 对象的指针和一个指向 Cat 对象的指针:
```
Animal *a = new Animal;
Cat *c = new Cat;
```
我们可以使用 dynamic_cast 运算符将 a 转换为 Cat 指针:
```
Cat *c2 = dynamic_cast<Cat*>(a);
if (c2) {
// a 指向的是一个 Cat 对象
} else {
// a 指向的是一个 Animal 对象
}
```
同样,我们也可以将 c 转换为 Animal 指针:
```
Animal *a2 = dynamic_cast<Animal*>(c);
if (a2) {
// c 指向的是一个 Animal 对象
} else {
// c 指向的是一个 Cat 对象
}
```
阅读全文