用多态知识实现圆和长方形的面积和周长
时间: 2023-06-05 09:47:19 浏览: 267
使用多态知识,可以定义一个抽象的形状类,然后派生出圆和长方形类,分别实现它们的面积和周长计算方法。这样,在程序中就可以通过形状类的指针或引用来调用不同的派生类的方法,实现多态性。
具体实现步骤如下:
1. 定义一个抽象的形状类,包含计算面积和周长的纯虚函数:
```
class Shape {
public:
virtual double getArea() = 0;
virtual double getPerimeter() = 0;
};
```
2. 派生出圆类和长方形类,分别实现它们的面积和周长计算方法:
```
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() {
return 3.14 * radius * radius;
}
double getPerimeter() {
return 2 * 3.14 * radius;
}
};
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() {
return width * height;
}
double getPerimeter() {
return 2 * (width + height);
}
};
```
3. 在主函数中,通过形状类的指针或引用来调用不同的派生类的方法,实现多态性:
```
int main() {
Shape* s1 = new Circle(5);
Shape* s2 = new Rectangle(3, 4);
cout << "圆的面积:" << s1->getArea() << endl;
cout << "圆的周长:" << s1->getPerimeter() << endl;
cout << "长方形的面积:" << s2->getArea() << endl;
cout << "长方形的周长:" << s2->getPerimeter() << endl;
delete s1;
delete s2;
return 0;
}
```