大佬多,能不能教一下小弟c++的运算符重载

Zu-avatar

Zu

2021-01-10T11:50:53+00:00

求求大家了,过两天考试了

学生党30元请大佬喝点水[s:ac:哭1][s:ac:哭1]

代码题来了,老师说这个会做,期末才有可能及格[s:ac:瞎]
[img]https://img.nga.178.com/attachments/mon_202101/13/-7Q5-42t2K2eT3cSsg-hi.jpg.medium.jpg[/img]
Scout8635-avatar

Scout8635

哪里理解不了?
bwong-avatar

bwong

有啥不能理解的?
Zu-avatar

Zu

[quote][pid=484992754,25097019,1]Reply[/pid] Post by [uid=42586094]我怎能不泊棠[/uid] (2021-01-13 19:55):

哪里理解不了?[/quote]友元还有引用[s:a2:大哭]
Muqing-avatar

Muqing

[url]https://www.w3cschool.cn/cpp/cpp-overloading.html[/url]
Zu-avatar

Zu

[quote][pid=484992868,25097019,1]Reply[/pid] Post by [uid=42959719]HeavyIndustry[/uid] (2021-01-13 19:56):

有啥不能理解的?[/quote]友元和引用[s:ac:瞎]
THEORIGINOFBOB-avatar

THEORIGINOFBOB

[quote][pid=484992985,25097019,1]Reply[/pid] Post by [uid=41419734]心悦君兮知不知[/uid] (2021-01-13 19:56):

友元还有引用[s:a2:大哭][/quote]运算符重载、友元、引用这是三个知识点啊。
bwong-avatar

bwong

[quote][pid=484992985,25097019,1]Reply[/pid] Post by [uid=41419734]心悦君兮知不知[/uid] (2021-01-13 19:56):

友元还有引用[s:a2:大哭][/quote]友元无非就是让某个类无视封装能够直接访问某个其他类的私有数据
opam gangnam style-avatar

opam gangnam style

这种东西一搜一大把,有啥不理解的
Zu-avatar

Zu

还有析构函数里面包含一个cout语句,这个句子输出了5遍怎么搞的[s:ac:瞎]
bwong-avatar

bwong

[quote][pid=484993451,25097019,1]Reply[/pid] Post by [uid=62736635]有备而来的年轻人[/uid] (2021-01-13 19:58):

运算符重载、友元、引用这是三个知识点啊。[/quote]运算符重载,就是把运算符的含义改变。

举个例子,1+2,这里的加号实际上是个函数,你可以理解为operation+(1,2),结果是3

如果我把operation+的内部流程变掉,就可以重载这个运算符。然后1+2结果可能会不一样。例如变成12(按你重载的函数来)
forrest-avatar

forrest

运算符重载不理解?
比如 + 运算符
原本是用来两个 数字相加的,比如 3+5
但是你有字符串 "aaa","bbbb"
你想把两个字符串连接起来变成 "aaabbbb"
正常应该是定义一个函数 char* Add(char* a, char* b) 这样来处理
不过这个连接的行为跟+的行为很像
所以我们重新定义+号,重载运算符+(相当于扩展了+号的作用)
将上面那个add函数实现在+的重载函数里面
这样,你就可以通过 "aaa" + "bbbb" 来简单明了的完成代码了
其实这个+本质上还是调用了Add方法。
常见的运算符重载一般用来比如某些跟数值处理相关的对象上
比如两个内存地址对象通过+可以得到一个新的内存地址等等
MagicMojo-avatar

MagicMojo

本来写了一点答案的,但看起来你根本没学嘛[s:ac:哭笑]
这种抱佛脚抱不了的
bwong-avatar

bwong

[quote][pid=484993641,25097019,1]Reply[/pid] Post by [uid=41419734]心悦君兮知不知[/uid] (2021-01-13 19:59):

还有析构函数里面包含一个cout语句,这个句子输出了5遍怎么搞的[s:ac:瞎][/quote]你不放代码谁知道。

搞不好是你这个类被实例化了五次或者有额外复制呢
bwong-avatar

bwong

[quote][pid=484994636,25097019,1]Reply[/pid] Post by [uid=81341]silverna[/uid] (2021-01-13 20:03):

本来写了一点答案的,但看起来你根本没学嘛[s:ac:哭笑]
这种抱佛脚抱不了的[/quote][s:a2:偷吃]他引用都不会,看来是真的没学
Crispycam18-avatar

Crispycam18

[s:ac:无语]
C++我n年没写,全忘记光了。
JohnnyBlaze-avatar

JohnnyBlaze

友元就是隔壁老王,打破只有你能访问的地方
Kerze-avatar

Kerze

[quote][pid=484993641,25097019,1]Reply[/pid] Post by [uid=41419734]心悦君兮知不知[/uid] (2021-01-13 19:59):

还有析构函数里面包含一个cout语句,这个句子输出了5遍怎么搞的[s:ac:瞎][/quote]类似传参的时候拷贝构造了吧
Zu-avatar

Zu

[quote][pid=484995084,25097019,1]Reply[/pid] Post by [uid=42959719]HeavyIndustry[/uid] (2021-01-13 20:06):

[s:a2:偷吃]他引用都不会,看来是真的没学[/quote]引用我知道什么意思,我不理解加引用的用途
THEORIGINOFBOB-avatar

THEORIGINOFBOB

[quote][pid=484995301,25097019,1]Reply[/pid] Post by [uid=41419734]心悦君兮知不知[/uid] (2021-01-13 20:07):

引用我知道什么意思,我不理解加引用的用途[/quote]反汇编看一下就啥都明白了。