定义抽象类Shape,由它派生出Rectangle(矩形)类、Circle(圆)类、 Triangle(三角形)类,定义三种派生类对象,统一输出它们的周长。 Rectangle a(3,4),b(12,6); Circle c(1,1,3); Triangle d(3,4,5); …… //统一输出a,b,c,d的周长 c++ 不报错 有必要注释
时间: 2024-02-19 17:59:23 浏览: 89
好的,以下是代码示例和注释:
```c++
#include<iostream>
using namespace std;
//定义抽象类Shape
class Shape{
public:
//定义纯虚函数getPerimeter,要求子类必须实现
virtual double getPerimeter() = 0;
};
//Rectangle类
class Rectangle : public Shape{
private:
double length;
double width;
public:
//构造函数
Rectangle(double l, double w){
length = l;
width = w;
}
//重写getPerimeter函数
double getPerimeter(){
return 2 * (length + width);
}
};
//Circle类
class Circle : public Shape{
private:
double x;
double y;
double radius;
public:
//构造函数
Circle(double a, double b, double r){
x = a;
y = b;
radius = r;
}
//重写getPerimeter函数
double getPerimeter(){
return 2 * 3.14 * radius;
}
};
//Triangle类
class Triangle : public Shape{
private:
double a;
double b;
double c;
public:
//构造函数
Triangle(double x, double y, double z){
a = x;
b = y;
c = z;
}
//重写getPerimeter函数
double getPerimeter(){
return a + b + c;
}
};
int main(){
//创建对象
Rectangle a(3,4),b(12,6);
Circle c(1,1,3);
Triangle d(3,4,5);
//输出周长
cout << "矩形a的周长:" << a.getPerimeter() << endl;
cout << "矩形b的周长:" << b.getPerimeter() << endl;
cout << "圆c的周长:" << c.getPerimeter() << endl;
cout << "三角形d的周长:" << d.getPerimeter() << endl;
return 0;
}
```
注释中对代码进行了简单的说明,希望能解答您的问题。
阅读全文