一、操作符重載:
1、我們先來看一個(gè)問題實(shí)現(xiàn),下面的復(fù)數(shù)解決方案是否可行,復(fù)數(shù)大家應(yīng)該都不陌生(分為實(shí)部和虛部):
代碼版本一:
運(yùn)行結(jié)果:
這里通過Add函數(shù)可以解決Complex對象相加的問題,但是在我們數(shù)學(xué)運(yùn)算里面就是直接實(shí)部加實(shí)部,虛部加虛部,和正常的實(shí)數(shù)相加一樣,所以說,為什么不直接這樣操作呢,這就涉及到符號"+"的問題。
2、操作重載符的引出
c++中的重載能夠擴(kuò)展操作符的功能
操作符的重載以函數(shù)的方式進(jìn)行
本質(zhì):用特殊形式的函數(shù)擴(kuò)展操作符的功能
3、操作重載符的語法:
通過operator關(guān)鍵字可以定義特殊的函數(shù)
operator的本質(zhì)是通過函數(shù)重載操作符
語法格式:
代碼版本二:
輸出結(jié)果:
4、再次改進(jìn)代碼:
可以將操作符重載函數(shù)定義成為類的成員函數(shù)(前面我們學(xué)過,友元現(xiàn)代軟件開發(fā)不允許):
比全局操作符重載函數(shù)少一個(gè)參數(shù)(左操作數(shù),成員函數(shù)中隱藏的 this 參數(shù)可以充當(dāng)左操作數(shù)的角色)
不需要依賴友元就可以完成操作符重載
編譯器優(yōu)先在成員函數(shù)中尋找操作符重載(一旦在成員函數(shù)中找到,就不會去全局找)
二、小結(jié):
操作符重載是c++的強(qiáng)大特性之一
操作符重載的本質(zhì)是通過函數(shù)擴(kuò)展操作符的功能
operator 關(guān)鍵字是實(shí)現(xiàn)操作符重載的關(guān)鍵
操作符重載遵循相同的函數(shù)重載規(guī)則
全局函數(shù)和成員函數(shù)都可以實(shí)現(xiàn)對操作符的重載
-
可編程邏輯
+關(guān)注
關(guān)注
7文章
526瀏覽量
44560 -
C++
+關(guān)注
關(guān)注
22文章
2117瀏覽量
74769
發(fā)布評論請先 登錄
基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫案例:ThreadPoll

Spire.XLS for C++組件說明

運(yùn)動控制卡周期上報(bào)實(shí)時(shí)數(shù)據(jù)IO狀態(tài)之C++篇

同樣是函數(shù),在C和C++中有什么區(qū)別
邏輯異或運(yùn)算符在Python中的用法
C7000優(yōu)化C/C++編譯器

技術(shù)干貨驛站 ▏解鎖C語言高效編程秘訣:深入解析運(yùn)算符與優(yōu)先級

鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基礎(chǔ)數(shù)據(jù)類型整數(shù)類型
鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基礎(chǔ)數(shù)據(jù)類型布爾類型
c語言中從左到右結(jié)合怎么看
c語言從右到左的運(yùn)算符有哪些
C++中實(shí)現(xiàn)類似instanceof的方法

評論