设计一个描述正方形的类 Square,并具有计算面积的成员函数 GetArea( )。从 Square 类派生一个矩形类 Rectangle,Rectangle 也使用 GetArea( )函数计算面积。 头文件 SquareRectangle.h 源代码如下: //SquareRectangle.h #include<iostream.h> #include<math.h> class Square { protected: int edge; public: virtual double GetArea(); Square(int edg); ~Square( ) { } }; Square::Square(int edg) { edge=edg; } //求正方形的面积 double Square::GetArea() { double result; result=edge*edge; return result; }
时间: 2024-03-14 12:43:05 浏览: 15
这是一个关于派生类的例子,Square类表示正方形,Rectangle类表示矩形,Rectangle类是从Square类派生而来的。
头文件SquareRectangle.h的内容如下:
```c++
#include<iostream>
#include<math.h>
class Square {
protected:
int edge;
public:
virtual double GetArea();
Square(int edg);
~Square();
};
class Rectangle : public Square {
protected:
int width;
public:
Rectangle(int edg, int wid);
double GetArea();
~Rectangle();
};
```
这里定义了两个类,Square和Rectangle。Square类有一个保护成员变量edge表示正方形的边长,以及一个虚函数GetArea(),用于计算正方形的面积。Rectangle类是从Square类派生而来的,它有一个额外的保护成员变量width表示矩形的宽度,并重写了GetArea()函数以计算矩形的面积。
Square类和Rectangle类的实现如下:
```c++
Square::Square(int edg) {
edge = edg;
}
Square::~Square() {
}
double Square::GetArea() {
double result;
result = edge * edge;
return result;
}
Rectangle::Rectangle(int edg, int wid) : Square(edg) {
width = wid;
}
Rectangle::~Rectangle() {
}
double Rectangle::GetArea() {
double result;
result = edge * width;
return result;
}
```
注意,Rectangle类的构造函数使用了初始化列表来调用父类Square的构造函数,并传递了边长参数。
下面是一个示例程序,演示了如何创建Square类和Rectangle类的对象,并调用它们的GetArea()函数计算面积:
```c++
#include "SquareRectangle.h"
int main() {
Square square(5);
Rectangle rectangle(4, 6);
std::cout << "Square area: " << square.GetArea() << std::endl;
std::cout << "Rectangle area: " << rectangle.GetArea() << std::endl;
return 0;
}
```
输出:
```
Square area: 25
Rectangle area: 24
```
可以看到,Square类和Rectangle类都成功地计算了它们各自的面积。