C++運算符重載限制介紹
文章轉(zhuǎn)自公眾號:Coder梁(ID:Coder_LT)
一、重載限制
上一篇我們講了在類和結(jié)構(gòu)體當中重載運算符,關于運算符的重載并不是隨心所欲的。C++給出了一些限制,從而保證了規(guī)范,以及程序運行的準確性。
下面我們就來一一來看下:
1.必須至少有一個操作數(shù)是用戶定義的類型
這句話看不明白沒有關系,我們只需要記住它的目的就好了。它的主要目的是為了防止用戶為了標準類型重載運算符。比如將+重載成兩個數(shù)的差,而不是和。
這種限制對創(chuàng)造性有一定的影響,沒有那么靈活,但可以保證程序的正常運行。不會出現(xiàn)一些反人類的情況
2.不能違反運算符原來的規(guī)則
這一點很好理解,比如+號,它的運算就是計算兩個數(shù)的和。需要有兩個操作數(shù),現(xiàn)在我們把它重載成一個操作數(shù),就是違法的。
P p; +p;
同樣,我們也不能修改運算符的優(yōu)先級,如果將加號運算符重載成兩個類相加,那么新的運算符和原來的加號擁有一樣的優(yōu)先級。
3.不能創(chuàng)建新運算符
這一點之前已經(jīng)說過了,比如不能定義operator
@等這種原來沒有的運算符。
4.禁止名單
有一些運算符是禁止重載的,如:sizeof, ., ::, ?:, typeid, const_cast, dynamic_cast, reinterpret_cast, static_cast
這些運算符往往都有特殊的功能,直接從實現(xiàn)層面禁止重載。
5.部分運算符只能通過成員函數(shù)重載
大多數(shù)運算符都可以通過成員函數(shù)以及非成員函數(shù)進行重載,但也有部分例外,只能通過成員函數(shù)重載,
如:
=
:賦值運算符()
: 函數(shù)調(diào)用運算符[]
: 下標運算符->
: 箭頭符號
這里的非成員函數(shù)看起來有些費解,之后我們會遇到,主要是指友元函數(shù)。
到此這篇關于C++運算符重載限制介紹的文章就介紹到這了,更多相關C++運算符重載限制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++ Qt開發(fā)之使用QHostInfo查詢主機地址
Qt 是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應用程序,本文將重點介紹如何運用QHostInfo組件實現(xiàn)對主機地址查詢功能,希望對大家有所幫助2024-03-03C語言中使用qsort函數(shù)對自定義結(jié)構(gòu)體數(shù)組進行排序
這篇文章主要介紹了C語言中使用qsort函數(shù)對自定義結(jié)構(gòu)體數(shù)組進行排序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11visual studio code 編譯運行html css js文件的教程
這篇文章主要介紹了visual studio code 如何編譯運行html css js文件,本文通過圖文實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03C++將音頻PCM數(shù)據(jù)封裝成wav文件的方法
這篇文章主要為大家詳細介紹了C++將音頻PCM數(shù)據(jù)封裝成wav文件的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01