通过指向基类circle 对象的指针调用虚函数area()来实现多态性。c++
时间: 2024-02-25 17:57:13 浏览: 40
好的,你可以通过以下代码来实现:
```c++
#include <iostream>
using namespace std;
class Circle {
protected:
double radius;
public:
Circle(double r) {
radius = r;
}
virtual double area() {
cout << "计算圆的面积" << endl;
return 3.14 * radius * radius;
}
};
class Rectangle: public Circle {
public:
Rectangle(double r): Circle(r) { }
virtual double area() {
cout << "计算矩形的面积" << endl;
return radius * radius;
}
};
int main() {
Circle *c;
Circle c1(10);
Rectangle r1(10);
c = &c1;
c->area();
c = &r1;
c->area();
return 0;
}
```
在这个程序中,我们定义了两个类 Circle 和 Rectangle。Circle 类中有一个虚函数 area(),用来计算圆的面积。Rectangle 类继承了 Circle 类,并重写了 area() 函数,用来计算矩形的面积。
在 main 函数中,我们首先定义了一个 Circle 类的对象 c1 和一个 Rectangle 类的对象 r1。然后我们定义了一个指向 Circle 类对象的指针 c,并将其指向 c1。我们调用 c 的 area() 函数,由于 c 指向的是 Circle 类的对象,因此会调用 Circle 类的 area() 函数。接下来我们将 c 指向 r1,并再次调用 c 的 area() 函数,由于 c 指向的是 Rectangle 类的对象,因此会调用 Rectangle 类的 area() 函数。这就是多态性的体现。
阅读全文