The_Icer 2016-08-14 06:43 采纳率: 62.5%
浏览 1035
已采纳

一个关于C++运算符重载的问题

#include
using namespace std;
class Com{
public:
Com(double i,double j){i=i;j=j;}
Com(Com&c):i(c.i),j(c.j){}
void show(){cout<<i<<"+"<<j<<"i";}
Com operator+(Com c){return Com(i+c.i,j+c.j); }
private:
double i,j;
};
上面这个代码有错吗?为什么我 没写复制构造函数就不会有问题,写了就报错[Error] no matching function for call to 'Com::Com(Com)'?求教

  • 写回答

2条回答 默认 最新

  • lm_whales 2016-08-14 07:29
    关注

    1)//拷贝构造函数 应为为
    Com(const Com&c):i(c.i),j(c.j){};
    C++11: 最好写两个 拷贝构造函数,一个拷贝,一个移动
    Com(const Com&c):i(c.i),j(c.j){};
    Com(Com&&c):i(c.i),j(c.j){};

    2)//成员函数方式重载双目运算符,一般写成这样。
    Com &operator+(const Com &c){(i+=c.i;j+=c.j;return this;);
    }

    3) 双目运算符最好重载为友元函数,这样两个参数都可以是 const T& 类型参数,适应性也比较好。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献