二维坐标Point类派生三维空间坐标点类Point3D.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <iostream>
  2. #include <cmath>
  3. // 定义二维平面坐标点类
  4. class Point {
  5. protected:
  6. double x, y;
  7. public:
  8. // 构造函数1:创建原点(0, 0)
  9. Point() : x(0), y(0) {}
  10. // 构造函数2:带参数
  11. Point(double x, double y) : x(x), y(y) {}
  12. double getx() const {
  13. return x;
  14. }
  15. double gety() const {
  16. return y;
  17. }
  18. double dist(const Point& p) const {
  19. return std::sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
  20. }
  21. };
  22. // 定义三维空间坐标点类,继承自二维平面坐标点类
  23. class Point3D : public Point {
  24. private:
  25. double z;
  26. public:
  27. // 构造函数1:创建原点(0, 0, 0)
  28. Point3D() : Point(), z(0) {}
  29. // 构造函数2:带参数
  30. Point3D(double x, double y, double z) : Point(x, y), z(z) {}
  31. double getz() const {
  32. return z;
  33. }
  34. double dist(const Point3D& p) const {
  35. return std::sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y) + (z - p.z) * (z - p.z));
  36. }
  37. };
  38. int main() {
  39. // 创建A点和B点
  40. Point3D A(0, 0, 0);
  41. Point3D B(4, 5.6, 7.8);
  42. // 计算A点和B点之间的距离并输出
  43. double distance = A.dist(B);
  44. std::cout << "|A-B|=" << distance << std::endl;
  45. return 0;
  46. }