C++父类指针或引用指向子类对象
时间: 2024-10-17 18:05:05 浏览: 86
在C++中,父类指针或引用可以指向子类的对象,这体现了多态的一个重要特性——向下转换(Downcasting)。当一个父类类型的指针或引用已经指向了一个实际的子类对象时,你可以将其强制转换为子类类型,以便访问子类特有的成员或方法。
例如:
```cpp
class Base {
public:
virtual void display() { cout << "Base class" << endl; }
};
class Derived : public Base {
public:
void display() override { cout << "Derived class" << endl; }
};
int main() {
Base* basePtr = new Derived(); // 创建一个Derived类的对象并赋给Base指针
// 使用父类指针调用显示方法,会调用Derived类的display()
basePtr->display();
// 向下转换为Derived类型,可以直接访问Derived特有的方法或属性
Derived& derivedRef = *basePtr;
derivedRef.display(); // 输出 "Derived class"
delete basePtr; // 释放内存
return 0;
}
```
在这个例子中,`basePtr`虽然是Base类型的指针,但实际上它指向的是Derived类型的对象。通过向下转换,我们可以在运行时动态地调用Derived类特有的功能。
阅读全文