operator+ 运算符重载的学习!

vloso 2018-08-18 04:40:45
我看了几个小时还是 没看出来是什么意思, 比喻 operator+(......) 这个是函数吗?它相加什么东西?这个重载问题一点头绪都没有!
...全文
291 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
丰清航 2018-08-18
  • 打赏
  • 举报
回复
引用 5 楼 vloso的回复:
[quote=引用 4 楼 songysu 的回复:]
void operator=(const Distance &D ) 在main函数执行D1=D2;时被调用, D2就是括号中传入的参数


我找了百度很久,完成查询不到 operator 调用的条件!难道是 2个对象 A=B 这个是唯一条件?[/quote] A=B可以看作 A.operator=(B)
vloso 2018-08-18
  • 打赏
  • 举报
回复
引用 4 楼 songysu 的回复:
void operator=(const Distance &D ) 在main函数执行D1=D2;时被调用, D2就是括号中传入的参数


我找了百度很久,完成查询不到 operator 调用的条件!难道是 2个对象 A=B 这个是唯一条件?
丰清航 2018-08-18
  • 打赏
  • 举报
回复
void operator=(const Distance &D ) 在main函数执行D1=D2;时被调用, D2就是括号中传入的参数
vloso 2018-08-18
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
class Distance
{
private:
int feet; // 0 到无穷
int inches; // 0 到 12
public:
// 所需的构造函数
Distance()
{
feet = 0;
inches = 0;
}
Distance(int f, int i)
{
feet = f;
inches = i;
}
void operator=(const Distance &D )

{
feet = D.feet;
inches = D.inches;
}

/* void operator=(const Distance &D )

{
feet = D.feet+D.feet;
inches = D.inches+D.inches;
}
*/
void displayDistance()
{
cout << "F: " << feet << " I:" << inches << endl;
}

};
int main()
{
Distance D1(11, 10), D2(5, 11);
D1.displayDistance();
D2.displayDistance();
D1 = D2;
D1.displayDistance();
return 0;
}


这个是网上找的一个例子,我注释了跟不注释显示的结果是一样的?

还有个问题,运算符重载 《 void operator=(const Distance &D )》它很像一个函数的格式

但是我没有看到像普通函数调用它的 方法,比喻 在 main() 里 abc(参数)这样,是不是自动运行的?


vloso 2018-08-18
  • 打赏
  • 举报
回复
引用 1 楼 smwhotjay 的回复:

重载符号,让你的类实现符号操作, 比如实现 a+a 会是啥,自己重载实现。


比喻注释的 这个我替换了结果好像一样,还是没明白运用在什么地方了
smwhotjay 2018-08-18
  • 打赏
  • 举报
回复

重载符号,让你的类实现符号操作, 比如实现 a+a 会是啥,自己重载实现。

65,187

社区成员

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

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