c++使用基类指针指向子类
时间: 2024-12-06 22:12:55 浏览: 14
在C++中,你可以使用基类指针或引用来指向子类的对象。这种设计被称为"多态性"的一种形式,也叫做动态绑定。通过基类指针,你可以在运行时不确定具体对象的实际类型,而只关心其共享的公共特性。
例如,假设有一个基类`Shape`,它有两个子类`Circle`和`Square`。你可以这样做:
```cpp
class Shape {
public:
virtual void draw() {
// 默认行为
cout << "Drawing a shape." << endl;
}
};
class Circle : public Shape {
public:
void draw() override {
cout << "Drawing a circle." << endl;
}
};
class Square : public Shape {
public:
void draw() override {
cout << "Drawing a square." << endl;
}
};
// 使用基类指针
Shape* pointerToShape; // 或者Shape& referenceToShape;
// 创建并初始化子类对象
Circle circle;
Square square;
// 使用基类指针存储子类对象
pointerToShape = &circle; // 或者referenceToShape = &circle;
pointerToShape->draw(); // 输出 "Drawing a circle."
// 改变指针指向
pointerToShape = □
pointerToShape->draw(); // 输出 "Drawing a square."
```
这样,当你通过基类指针调用`draw()`方法时,实际执行的是子类的实现,这就是多态性的体现。
阅读全文