如何在c+中编写一个函数来实现这个功能?
时间: 2024-09-21 14:02:11 浏览: 19
在 C++ 中,你可以通过以下步骤来编写一个多态的函数:
1. **抽象基类**(Abstract Base Class, ABC):首先创建一个抽象类,其中包含纯虚函数(pure virtual function)。这是为了强制子类必须提供特定的行为。例如:
```cpp
class Shape {
public:
virtual void draw() = 0; // 纯虚函数,所有子类都必须重写此方法
};
```
2. **派生类**:然后创建派生类并覆盖基类的虚函数。每个派生类提供其特有的实现:
```cpp
class Circle : public Shape {
public:
void draw() override { // 使用override关键字明确标记这是重写父类的draw()
std::cout << "Drawing a circle.\n";
}
};
class Square : public Shape {
public:
void draw() override {
std::cout << "Drawing a square.\n";
}
};
```
3. **虚函数调用**:在主程序或其他基类的非成员函数中,你可以通过基类指针或引用来调用 `draw()` 函数,C++会自动找到正确的子类版本来执行:
```cpp
void paint(Shape* shape) { // 基类指针
shape->draw();
}
int main() {
Shape* circle = new Circle(); // 创建一个Circle对象
Shape* square = new Square(); // 创建一个Square对象
paint(circle); // 输出 "Drawing a circle."
paint(square); // 输出 "Drawing a square."
delete circle;
delete square;
return 0;
}
```