基类为正方形类,数据包含边长,方法包含求面积、周长、构造 函数、输出函数;子类为正方体,保护继承于正方形类,数据包含高,新增方法包含构造函数、求体积函数,在主函数中构建子类对象,并将输出结果保存在文件中。
时间: 2024-02-23 10:00:26 浏览: 52
好的,这是一个关于面向对象编程的问题。下面是我给出的解答:
```c++
#include<iostream>
#include<fstream>
using namespace std;
// 正方形类
class Square {
protected:
double side; // 边长
public:
Square() {} // 默认构造函数
Square(double s):side(s) {} // 构造函数
double area() { return side * side; } // 求面积
double perimeter() { return 4 * side; } // 求周长
void output() { // 输出函数
cout << "正方形的边长为:" << side << endl;
cout << "正方形的面积为:" << area() << endl;
cout << "正方形的周长为:" << perimeter() << endl;
}
};
// 正方体类
class Cube : protected Square {
private:
double height; // 高
public:
Cube() {} // 默认构造函数
Cube(double s, double h):Square(s), height(h) {} // 构造函数
double volume() { return area() * height; } // 求体积
void output() { // 输出函数
Square::output(); // 调用基类的输出函数
cout << "正方体的高为:" << height << endl;
cout << "正方体的体积为:" << volume() << endl;
}
};
int main() {
Cube myCube(2.0, 3.0); // 构建子类对象
myCube.output(); // 输出结果
ofstream outfile("result.txt"); // 打开输出文件
streambuf* coutbackup = cout.rdbuf(); // 保存cout的缓冲区指针
cout.rdbuf(outfile.rdbuf()); // 将cout的缓冲区指针指向输出文件
myCube.output(); // 将输出结果保存在文件中
cout.rdbuf(coutbackup); // 将cout的缓冲区指针恢复
outfile.close(); // 关闭输出文件
return 0;
}
```
希望这个答案能够帮到你,如果你还有其他问题,请继续提问。
阅读全文