您现在的位置是:首页 > 实践案例
朝文分享(50):深入C++(十七)——运算符重载
加盟快讯
2025-12-10【实践案例】176人已围观
简介分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来“深入C++(十七)——运算符重载”,欢迎您的访问。Shareinterest,spreadhappiness,increaseknowledge,andleavebeautiful.Dear,...
分享兴趣,传播快乐,增长见闻,留下美好!
亲爱的您,这里是LearningYard新学苑。
今天小编为大家带来“深入C++(十七)——运算符重载”,欢迎您的访问。
Shareinterest,spreadhappiness,increaseknowledge,andleavebeautiful.
Dear,thisistheLearingYardAcademy!
Today,DiveintoC++(17)-Operatoroverloading,welcometovisit!
一、左移运算符重载
1.Theleftshiftoperatorisoverloaded
上期主要讲了加法运算符重载,这期对上期内容进行扩展。对于想要实现对象的输出,编译器没有提供。这时就得对左移运算符进行重载操作。
Thisissueexpandsonthepreviousinstallment,
运算符的重载分两种,一种是作为成员函数重载,另一种是作为全局函数重载。
Therearetwotypesofoperatoroverloading:oneismemberfunctionoverloading,andtheotherisglobalfunctionoverloading.
但对于左移运算符来说,该函数是由cout进行调用。而cout所在的类是编译器内置的,不好修改。所以左移运算符只能作为全局变量重载。
Fortheleftshiftoperator,however,,soit'
重载形式大致如上。但可以发现后面的l出现了异常。我们重载的左移运算符是无返回值的。当左移运算符调用一次后,就无法继续调用左移运算符了。
,,thereisnowaytocalltheleftshiftoperatoragain.
这时就得体现链式编程的思想。通过返回相同的类型实现反复调用,即返回ostream类型。
,thatis,anostream.
由于直接访问私有变量,代码出现错误。这个问题如何解决呢?没错!友元。
?That'sright!Fris.
这段代码就算完成了。运行结果如下。
:
二、递增运算符重载
2.Overloadingtheincrementoperator
递增运算符,即++。递增运算符是一种常用的运算符,分前置递增和后置递增,经常出现在循环中。对于自定义的整型如何实现递增呢?
Theincrementoperator,++.?
因为出现输出,所以我们先来解决左移运算符的问题。了解了上一个部分的知识,相信大家很快就能写出来。
Becauseoftheoutput,let',I'msureyou'llbeabletowriteitinnotime.
接下来就是如何实现递增运算符重载。递增运算符是属于自定义整型的。出于逻辑性,这里作为成员函数进行重载。
,itisoverloadedasamemberfunction.
首先是前置递增的重载。返回的类型是自定义整型。返回的值是递增之后的对象。这里用*this直接返回对象本身。
*thistoreturntheobjectitselfdirectly.
然后是后置递增的重载。返回的类型仍然是自定义整型。返回的是递增前的值。将原对象进行保存,再进行递增,最后将保存的对象返回。
,thenincremented,andfinallythesavedobjectisreturned.
完成后运行。前置递增,先递增后输出。后置递增,先保存,再递增,最后输出保存值。再次输出则为递增后的值。
Runwhenyou',,firstsave,thenincrement,
今天的分享就到这里了,
如果您对文章有独特的想法,
欢迎给我们留言。
让我们相约明天,
祝您今天过得开心快乐!
That'sallfortoday'ssharing.
Ifyouhaveauniqueideaaboutthearticle,
pleaseleaveusamessage,
andletusmeettomorrow.
Iwishyouaniceday!
翻译:网易有道翻译
本文由LearningYard学苑整理并发出,如有侵权请后台留言沟通.
文案|Dongyang
排版|Dongyang
审核|hong
LearningYard新学苑
很赞哦!(44)