您现在的位置是:首页 > 实践案例

朝文分享(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)