运算符重载

tingfengx 2011-11-29 07:46:51
#include<iostream>
using namespace std;
class Cload
{ int val;
public:
Cload(){val=0;}
Cload(int v){val=v;}
void print(){cout<<"member data is"<<val<<endl;}
Cload&operator+(int i);
Cload&operator+(Cload&op);
Cload&operator-(int i);
Cload&operator-(Cload&op);
};
Cload&Cload::operator+(int i)
{
val+=i;
return *this;}
Cload&Cload::operator+(Cload&op)
{
op.val=val;
return *this;
}
Cload&Cload::operator-(int i)
{
val+=i;
return *this;
}
Cload&Cload::operator-(Cload&op)
{
val+=op.val;
return *this;
}
void main()
{
Cload L1(10),L2,L3(3);
L1.print();
L2=L1+L3;
L2.print();
}

这个程序解释一下,L2=L1+L3是什么意思
...全文
81 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
追求执着 2011-11-30
  • 打赏
  • 举报
回复
给对象重载了operator+
所以对象能够进行+运算
tingfengx 2011-11-30
  • 打赏
  • 举报
回复
Cload&operator+(int i);
Cload&operator+(Cload&op);
这两行 括号外Cload后边的&是干什么的 Cload&operator+这是运算符的重载的定义方式吗
turing-complete 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 quwei197874 的回复:]

+,-的重载最好写成友元函数,否则无法进行 a+b+c这样的操作
[/Quote]

是吗? 我怎么没看出来? 望指点
quwei197874 2011-11-29
  • 打赏
  • 举报
回复
+,-的重载最好写成友元函数,否则无法进行 a+b+c这样的操作
tingfengx 2011-11-29
  • 打赏
  • 举报
回复
输出结果是
member data is 10
member data is 10能不能详细解释下程序是怎么运行的 结果怎么出来的
qscool1987 2011-11-29
  • 打赏
  • 举报
回复
L2=L1+L3;
就是等价于
Cload temp = L1.operator+(L3);
L2 = temp;
turing-complete 2011-11-29
  • 打赏
  • 举报
回复
----------->  L2 = L1.operator+( L3 );   ---------> L2.operator=( L1.operator+( L3 ) );
liutengfeigo 2011-11-29
  • 打赏
  • 举报
回复
Cload&Cload::operator+(Cload&op)
{
op.val=val;
return *this;
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧