基类为正方形类,数据包含边长,方法包含求面积、周长、构造 函数、输出函数;子类为正方体,保护继承于正方形类,数据包含高,新增方法包含构造函数、求体积函数,在主函数中构建子类对象,并将输出结果保存在文件中。
时间: 2024-02-23 13:59:28 浏览: 71
好的,以下是对应的C++代码:
```c++
#include <iostream>
#include <fstream>
using namespace std;
class Square {
protected:
double side; // 正方形边长
public:
Square(double s) : side(s) {} // 构造函数
double getArea() { return side * side; } // 求面积方法
double getPerimeter() { return 4 * side; } // 求周长方法
void print() { // 输出函数
cout << "正方形:边长 = " << side << ",面积 = " << getArea() << ",周长 = " << getPerimeter() << endl;
}
};
class Cube : protected Square {
private:
double height; // 正方体高度
public:
Cube(double s, double h) : Square(s), height(h) {} // 构造函数
double getVolume() { return getArea() * height; } // 求体积方法
void print() { // 输出函数
cout << "正方体:边长 = " << side << ",高度 = " << height << ",体积 = " << getVolume() << endl;
}
};
int main() {
Cube cube(2.0, 3.0);
cube.print();
ofstream out("result.txt"); // 打开输出文件
streambuf *coutbuf = cout.rdbuf(); // 保存cout缓存
cout.rdbuf(out.rdbuf()); // 重定向cout输出到文件
cube.print();
cout.rdbuf(coutbuf); // 恢复cout缓存
return 0;
}
```
这里使用了基类和子类的继承关系,基类是正方形类,子类是正方体类,在子类中使用 `protected` 继承基类,以便能够访问基类的成员变量和方法,同时为了保护基类的成员变量,将其设置为 `protected` 类型。在主函数中,构建了子类对象 `cube`,并输出结果到控制台和文件中。注意,在输出到文件时,需要重定向 `cout`。
阅读全文