C++ 类结构说明:Point、Plane 和 Circle 类详解
Point 类结构说明:
Point 类表示一个点,其数据成员包括:
- 私有数据成员:
x(double 型):X 坐标。y(double 型):Y 坐标。
Point 类成员函数包括:
- 有参构造函数:
Point(double, double),其中参数分别为 X 坐标和 Y 坐标,默认值均为 0。 - 公有函数成员:
void setX(double):设置 X 坐标。double getX() const:返回 X 坐标。void setY(double):设置 Y 坐标。double getY() const:返回 Y 坐标。
- 重载运算符:
<<:以(<X坐标>,<Y坐标>)的格式输出 Point 对象,例如(1.0,2.0)。>>:以(<X坐标>,<Y坐标>)的格式输入 Point 对象。
Plane 类结构说明:
Plane 类表示一个平面图形,其成员函数包括:
- 纯虚函数:
virtual double length() const:计算平面图形的周长。virtual double area() const:计算平面图形的面积。
Circle 类结构说明:
Circle 类表示一个圆形,它公有派生自 Point 类和 Plane 类,其结构说明如下:
- 数据成员:
- 继承自 Point 类: 圆心坐标。
- 保护静态数据常量:
PI(double 型),值为 3.14159。 - 私有数据成员:
radius(double 型):半径。
Circle 类成员函数包括:
- 有参构造函数:
Circle(double, double, double),其中函数参数包括圆心坐标和半径,圆心调用 Point 类构造函数进行构造,各参数默认值为 0。 - 公有函数成员:
void setR(double):设置半径。double getR() const:返回半径。
- 重载函数:
double area() const:计算圆的面积。double length() const:计算圆的周长。
- 重载运算符:
<<:以((<X坐标>,<Y坐标>),<半径>)的格式输出 Circle 对象,例如((1.0,2.0),3.0)。>>:以((<X坐标>,<Y坐标>),<半径>)的格式输入 Circle 对象。
main(void) 说明:
main(void) 函数的操作顺序描述如下:
- 使用已输入的
d1、d2构造 Point 对象p,并将p用<<写入文本文件s3.txt中。 - 打开文本文件
s3.txt,应用>>操作将里面的数据读入到 Point 对象p中。 - 利用 Point 对象
p的数据设置 Circle 对象c,设置要求:- 将
c的圆心 X 坐标设置为p的 Y 坐标。 - 将
c的圆心 Y 坐标设置为p的 X 坐标。 - 将
c的半径设置为p的 Y 坐标与 X 坐标的和。 并将设置好的c写入二进制文件b3.dat中。
- 将
- 打开二进制文件
b3.dat,将里面的数据读入到 Circle 对象c中。 - 最后以
c对象为参数调用f函数。
输入样例:
1.0 2.1
输出样例:
30.1907 19.4779
代码示例:
// ... Point 类实现 ...
// ... Plane 类实现 ...
// ... Circle 类实现 ...
int main() {
double d1, d2;
std::cin >> d1 >> d2;
Point p(d1, d2);
std::ofstream ofs('s3.txt');
ofs << p << std::endl;
ofs.close();
std::ifstream ifs('s3.txt');
ifs >> p;
ifs.close();
Circle c(p.getY(), p.getX(), p.getY() + p.getX());
std::ofstream out('b3.dat', std::ios::binary);
out.write(reinterpret_cast<char*>(&c), sizeof(c));
out.close();
std::ifstream in('b3.dat', std::ios::binary);
in.read(reinterpret_cast<char*>(&c), sizeof(c));
in.close();
std::cout << c.area() << std::endl;
std::cout << c.length() << std::endl;
return 0;
}
注意: 以上代码示例仅供参考,实际代码实现可能需要根据具体需求进行调整。
原文地址: https://www.cveoy.top/t/topic/ok3w 著作权归作者所有。请勿转载和采集!