Hey~Jude 2021-05-24 19:09 采纳率: 0%
浏览 12

operator+中的为什么不写构造函数是错的?

class person
{
public:
    person(){}
    person(int a,int b):m_a(a),m_b(b){
    }
    person operator+(person &t){
        person temp;
        temp.m_a = this->m_a + t.m_a;
        temp.m_b = this->m_b + t.m_b;
        return temp;
    }

public:

    int m_a;
    int m_b;
};

为什么没写person(){}是错的?

  • 写回答

1条回答 默认 最新

  • 正在学C++ 2021-05-24 19:15
    关注

    因为你重载+的时候建立的对象temp用到了默认构造函数来初始化数据成员,且由于你定义了一个带参数的构造函数,编译器不会自动生成默认构造函数。

    所以需要显式声明一个默认构造函数。

    评论

报告相同问题?

悬赏问题

  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能