C++如何实现多态的
时间: 2023-07-16 21:13:13 浏览: 83
C++多态的实现
5星 · 资源好评率100%
C++通过虚函数实现多态,具体步骤如下:
1. 定义一个基类,包含至少一个虚函数。
2. 派生一个或多个子类,并重写基类中的虚函数。
3. 声明一个指向基类的指针,并将其指向一个子类对象。
4. 调用虚函数时,将会根据指针指向的对象类型动态确定调用哪个子类中的函数。
下面是一个简单的例子,展示了如何使用虚函数实现多态:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual void draw() {
cout << "Shape::draw()" << endl;
}
};
class Circle : public Shape {
public:
void draw() {
cout << "Circle::draw()" << endl;
}
};
class Square : public Shape {
public:
void draw() {
cout << "Square::draw()" << endl;
}
};
int main() {
Shape* shape1 = new Circle();
Shape* shape2 = new Square();
shape1->draw(); // 输出 Circle::draw()
shape2->draw(); // 输出 Square::draw()
delete shape1;
delete shape2;
return 0;
}
```
在上面的例子中,我们定义了一个基类 Shape,其中包含一个虚函数 draw()。我们还定义了两个子类 Circle 和 Square,分别重写了基类中的虚函数。
在 main 函数中,我们声明了两个指向 Shape 的指针,分别指向 Circle 和 Square 对象。接着我们调用这两个指针所指向对象的 draw() 函数,根据指针指向的对象类型动态确定调用哪个子类中的函数。
当程序执行到 shape1->draw() 时,由于 shape1 指向 Circle 对象,因此会调用 Circle 中的 draw() 函数,输出 Circle::draw()。类似地,当程序执行到 shape2->draw() 时,由于 shape2 指向 Square 对象,因此会调用 Square 中的 draw() 函数,输出 Square::draw()。
总之,C++通过虚函数实现多态,可以方便地处理不同类型的对象,并根据对象类型动态确定函数调用。
阅读全文