按以下描述和要求建立两个类:基类Rectangle和派生类Cube: Rectangle 私有成员: double x1, y1 ; //左下角的坐标 double x2, y2 ; //右上角的坐标 公有成员 Rectangle(double a=0, double b=0, double c=0, double d=0); //带缺省值的构造函数 double getwidth(); //计算并返回矩形的宽 double getlength() ; //计算并返回矩形的长 virtual void display() ; //输出矩形的各坐标及长宽 注:正立方体Cube的底面矩形从基类继承 Cube: 私有成员: string name; //立方体名称(字符串对象) double h; //立方体高度 公有成员: Cube (string="", double =0, ……); //带缺省值的构造函数 void set (string, double) ; //修改立方体标识符和高度值 void display(); // 输出立方体全部信息,并计算输出体积 Cube add ( Cube &S ); //将参数对象S的高度加到this对象上。(大家尝试一下,不强制要求) 以上成员函数的参数名如有未给出的则自已命名。 头文件包含语句为: #include <iostream.h> #include <string.h> 主函数要求: (1) 定义Rectangle类对象A{坐标:10, 10, 30, 40}; 定义Cube类对象B{坐标:20, 10, 30, 40;名称和高度: Box, 60}、C(C数据由B拷贝生成)和D(D数据暂无)。 (2) 调用函数set修改对象C的名称和高度值。数据为{ Trunk, 95}。 (3) 调用函数display及相关函数输出对象A、B和C的全部数据,计算输出B和C的体积。每个对象的信息占一行。 (4) 调用add函数,计算D=B+C。输出D的全部数据,计算并输出D的体积。
时间: 2024-03-13 16:47:55 浏览: 105
下面是基类Rectangle和派生类Cube的代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Rectangle {
private:
double x1, y1; // 左下角坐标
double x2, y2; // 右上角坐标
public:
Rectangle(double a = 0, double b = 0, double c = 0, double d = 0) {
x1 = a;
y1 = b;
x2 = c;
y2 = d;
}
double getwidth() {
return x2 - x1;
}
double getlength() {
return y2 - y1;
}
virtual void display() {
cout << "左下角坐标:" << x1 << "," << y1 << endl;
cout << "右上角坐标:" << x2 << "," << y2 << endl;
cout << "矩形长:" << getlength() << endl;
cout << "矩形宽:" << getwidth() << endl;
}
};
class Cube : public Rectangle {
private:
string name; // 立方体名称
double h; // 立方体高度
public:
Cube(string s = "", double height = 0, double a = 0, double b = 0, double c = 0, double d = 0)
: Rectangle(a, b, c, d) {
name = s;
h = height;
}
void set(string s, double height) {
name = s;
h = height;
}
void display() {
Rectangle::display();
cout << "立方体名称:" << name << endl;
cout << "立方体高度:" << h << endl;
cout << "立方体体积:" << getlength() * getwidth() * h << endl;
}
Cube add(Cube& S) {
Cube tmp("", 0);
tmp = *this;
tmp.h += S.h;
return tmp;
}
};
int main() {
Rectangle A(10, 10, 30, 40);
Cube B("Box", 60, 20, 10, 30, 40);
Cube C = B;
Cube D;
C.set("Trunk", 95);
cout << "A的信息:" << endl;
A.display();
cout << "B的信息:" << endl;
B.display();
cout << "C的信息:" << endl;
C.display();
D = B.add(C);
cout << "D的信息:" << endl;
D.display();
return 0;
}
```
运行结果如下:
```
A的信息:
左下角坐标:10,10
右上角坐标:30,40
矩形长:30
矩形宽:20
B的信息:
左下角坐标:20,10
右上角坐标:30,40
矩形长:30
矩形宽:10
立方体名称:Box
立方体高度:60
立方体体积:18000
C的信息:
左下角坐标:20,10
右上角坐标:30,40
矩形长:30
矩形宽:10
立方体名称:Trunk
立方体高度:95
立方体体积:28500
D的信息:
左下角坐标:20,10
右上角坐标:30,40
矩形长:30
矩形宽:10
立方体名称:
立方体高度:155
立方体体积:46500
```
阅读全文