c++中虚函数的使用实例
时间: 2023-08-16 21:09:42 浏览: 125
下面是一个使用虚函数的实例:
```
#include <iostream>
class Shape {
public:
virtual double area() {
std::cout << "Calculate area of shape.\n";
return 0.0;
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() override {
double area = 3.14159 * radius * radius;
std::cout << "Area of circle: " << area << std::endl;
return area;
}
};
class Rectangle : public Shape {
private:
double length, width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double area() override {
double area = length * width;
std::cout << "Area of rectangle: " << area << std::endl;
return area;
}
};
int main() {
Shape* s;
Circle c(2.0);
Rectangle r(3.0, 4.0);
s = &c;
s->area();
s = &r;
s->area();
return 0;
}
```
在这个例子中,Shape 是一个抽象类,定义了一个虚函数 area(),用于计算图形的面积。Circle 和 Rectangle 类都继承自 Shape 类,并重写了 area() 函数,分别用于计算圆形和矩形的面积。
在 main() 函数中,首先创建了一个 Circle 对象和一个 Rectangle 对象,并通过 Shape 指针分别调用了它们的 area() 函数,这里使用了多态性,即通过基类指针或引用来调用子类的实现。输出结果为:
```
Area of circle: 12.5664
Area of rectangle: 12
```
可以看到,程序成功地分别计算出了圆形和矩形的面积,并使用了虚函数实现了多态性。
阅读全文