C++如何对基类基础重载后并多态吗,写出一个语法demo
时间: 2024-10-17 12:11:52 浏览: 14
在C++中,你可以对基类的虚函数进行重载,然后通过派生类实现多态。这是因为虚函数的行为取决于动态绑定,也就是运行时确定调用的具体版本,而不是静态绑定(编译期)。下面是一个简单的示例:
首先,我们有一个基类`Shape`,它有一个纯虚函数`draw`,表示绘制形状的基本行为:
```cpp
class Shape {
public:
virtual void draw() = 0; // 纯虚函数,所有派生类都必须实现
};
```
然后我们可以定义两个派生类`Circle`和`Rectangle`,它们各自重载`draw`函数:
```cpp
class Circle : public Shape {
public:
void draw() override { // 重载draw函数
std::cout << "Drawing a circle...\n";
}
};
class Rectangle : public Shape {
public:
void draw() override { // 另一个版本的draw函数
std::cout << "Drawing a rectangle...\n";
}
};
```
现在,我们可以创建这两个类的对象,并通过`Shape`指针或引用调用`draw`,实现了多态:
```cpp
int main() {
Shape* shape_ptrs[] = {
new Circle,
new Rectangle
};
for (auto ptr : shape_ptrs) {
ptr->draw(); // 这里会根据ptr的实际指向对象调用对应的draw函数
}
delete[] shape_ptrs; // 释放内存
return 0;
}
```
在这个例子中,无论`shape_ptrs`数组中的元素是什么类型(`Circle`或`Rectangle`),`draw`函数都会根据实际对象调用正确的版本。
阅读全文