设计Rectangle类,用长、宽计算周长和面积,默认长宽 均为0。 设计Square类,继承于Rectangle类,用边长计算周长 和面积,默认边长为0 测试: 1.对象可以初始化:有参构造函数 2.同名西数:周长,面积函数 3.类型兼容规则: Rectangle *pr; 1/基类 Square s(5);1/派生类 pr=&s; 1基类指针指向派生类对象
时间: 2024-03-03 20:47:40 浏览: 12
好的,我明白了您的问题。下面是对应的代码实现:
```c++
#include<iostream>
using namespace std;
class Rectangle {
protected:
double length;
double width;
public:
Rectangle(double l = 0, double w = 0) : length(l), width(w) {}
double getLength() const { return length; }
double getWidth() const { return width; }
double getPerimeter() const { return 2 * (length + width); }
double getArea() const { return length * width; }
};
class Square : public Rectangle {
public:
Square(double a = 0) : Rectangle(a, a) {}
};
int main() {
// 测试对象初始化
Rectangle r(3, 4);
Square s(5);
// 测试同名函数
cout << "Perimeter of rectangle: " << r.getPerimeter() << endl;
cout << "Area of rectangle: " << r.getArea() << endl;
cout << "Perimeter of square: " << s.getPerimeter() << endl;
cout << "Area of square: " << s.getArea() << endl;
// 测试类型兼容规则
Rectangle* pr;
pr = &s;
cout << "Perimeter of square using base class pointer: " << pr->getPerimeter() << endl;
cout << "Area of square using base class pointer: " << pr->getArea() << endl;
return 0;
}
```
输出结果为:
```
Perimeter of rectangle: 14
Area of rectangle: 12
Perimeter of square: 20
Area of square: 25
Perimeter of square using base class pointer: 20
Area of square using base class pointer: 25
```
希望您满意我的回答。