#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)'?求教
一个关于C++运算符重载的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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& 类型参数,适应性也比较好。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 安装svn网络有问题怎么办
- ¥15 Python爬取指定微博话题下的内容,保存为txt
- ¥15 vue2登录调用后端接口如何实现
- ¥65 永磁型步进电机PID算法
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥15 latex怎么处理论文引理引用参考文献