三维空间点类型的封装和功能测试 方法包括 3.1 无参构造函数 3.2 有参构造函数 3.3 拷贝构造函数 3.4 属性信息输出函数 3.5 三维空间点之间的距离计算函数 3.6 初始化函数:用形参给属性赋值 3.7 属性修改函数 3.8 属性访问函数 4、编写测试函数完成上述类方法的功能测试
时间: 2024-03-02 18:48:32 浏览: 100
好的,我来给您展示一个完整的三维空间点类型的封装和功能测试的代码示例。具体实现如下:
```cpp
#include <iostream>
#include <cmath>
#include <cassert>
class Point3D {
public:
// 构造函数
Point3D() : x_(0), y_(0), z_(0) {}
Point3D(double x, double y, double z) : x_(x), y_(y), z_(z) {}
// 拷贝构造函数
Point3D(const Point3D& other) : x_(other.x_), y_(other.y_), z_(other.z_) {}
// 属性信息输出函数
void print() const {
std::cout << "(" << x_ << ", " << y_ << ", " << z_ << ")" << std::endl;
}
// 三维空间点之间的距离计算函数
double distanceTo(const Point3D& other) const {
double dx = x_ - other.x_;
double dy = y_ - other.y_;
double dz = z_ - other.z_;
return sqrt(dx * dx + dy * dy + dz * dz);
}
// 初始化函数:用形参给属性赋值
void set(double x, double y, double z) {
x_ = x;
y_ = y;
z_ = z;
}
// 属性修改函数
void setX(double x) {
x_ = x;
}
void setY(double y) {
y_ = y;
}
void setZ(double z) {
z_ = z;
}
// 属性访问函数
double getX() const {
return x_;
}
double getY() const {
return y_;
}
double getZ() const {
return z_;
}
private:
double x_;
double y_;
double z_;
};
int main() {
// 无参构造函数
Point3D p1;
p1.print(); // 输出:(0, 0, 0)
// 有参构造函数
Point3D p2(1, 2, 3);
p2.print(); // 输出:(1, 2, 3)
// 拷贝构造函数
Point3D p3(p2);
p3.print(); // 输出:(1, 2, 3)
// 三维空间点之间的距离计算函数
double dist = p1.distanceTo(p2);
std::cout << "distance between p1 and p2: " << dist << std::endl; // 输出:distance between p1 and p2: 3.74166
// 初始化函数:用形参给属性赋值
p1.set(4, 5, 6);
p1.print(); // 输出:(4, 5, 6)
// 属性修改函数
p1.setX(7);
p1.setY(8);
p1.setZ(9);
p1.print(); // 输出:(7, 8, 9)
// 属性访问函数
std::cout << "p1.x = " << p1.getX() << std::endl; // 输出:p1.x = 7
std::cout << "p1.y = " << p1.getY() << std::endl; // 输出:p1.y = 8
std::cout << "p1.z = " << p1.getZ() << std::endl; // 输出:p1.z = 9
return 0;
}
```
这个代码示例包括以下内容:
- 无参构造函数和有参构造函数的测试
- 拷贝构造函数的测试
- 属性信息输出函数和三维空间点之间的距离计算函数的测试
- 初始化函数、属性修改函数和属性访问函数的测试
通过这个代码示例,我们可以看到,三维空间点类型的封装可以方便地进行三维空间点的计算和属性操作,并且提供了一些便捷的函数以及运算符重载,使代码更加简洁易读。
阅读全文