qq_44965611 2019-06-17 19:53 采纳率: 0%
浏览 2050

三维点坐标类Point3D?

设计一个三维点坐标的类Point3D,要求如下:
(1)包含三个int类型数据成员my_x, my_y, my_z;
(2)默认构造函数,默认三维点的坐标值为0, 0, 0;
(3)SetPoint函数,设置坐标值;
(4)用成员函数重载”+”运算符,实现两个Point3D类对象的加法运算;
(4)用友元函数重载前置“++”运算符以实现Point3D类对象的z值加1;
(5)重载运算符”<<”,实现点类对象的输出,坐标值x,y,z间以”,”分隔。
(6)在main( ) 函数中测试类Point3D“+”和前置“++”的功能,并输出结果。

  • 写回答

2条回答 默认 最新

  • 柯本 2023-12-28 11:26
    关注

    参考:

    #include <algorithm>
    #include <iostream>
    using namespace std;
    class Point3D
    {
    private:
      int my_x, my_y, my_z; //包含三个int类型数据成员my_x, my_y, my_z;
    
    public:
      Point3D() //默认构造函数,默认三维点的坐标值为0, 0, 0;
      {
        my_x = 0;
        my_y = 0;
        my_z = 0;
      }
      void SetPoint(int x, int y, int z) //SetPoint函数,设置坐标值;
      {
        my_x = x;
        my_y = y;
        my_z = z;
      }
      Point3D operator+(const Point3D &p) //用成员函数重载”+”运算符,实现两个Point3D类对象的加法运算;
      {
        my_x += p.my_x;
        my_y += p.my_y;
        my_z += p.my_z;
        return *this;
      }
         Point3D operator++() //函数重载前置“++”运算符以实现Point3D类对象的z值加1;这个是自加,不用友元的
      {
        my_z++;
        return *this;
      }
    friend ostream &operator<<(ostream &os, const Point3D &p) // 重载运算符”<<”,实现点类对象的输出,坐标值x,y,z间以”,”分隔。,这个要用友元
      {
        os  << p.my_x << ", " << p.my_y << ", " << p.my_z ;
        return os;
      }
    };
    int main()
    {
      Point3D p1, p2;
      p1.SetPoint(0, 0, 0);
      p2.SetPoint(1, 1, 1);
      cout << "p1: " << p1 << endl;
      p1 = p1 + p2;
      cout << "p1 after addition: " << p1 << endl;
      ++p1;
      cout << "p1 after pre-increment: " << p1 << endl;
      return 0;
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件