C++運(yùn)算符重載限制介紹
文章轉(zhuǎn)自公眾號(hào):Coder梁(ID:Coder_LT)
一、重載限制
上一篇我們講了在類(lèi)和結(jié)構(gòu)體當(dāng)中重載運(yùn)算符,關(guān)于運(yùn)算符的重載并不是隨心所欲的。C++給出了一些限制,從而保證了規(guī)范,以及程序運(yùn)行的準(zhǔn)確性。
下面我們就來(lái)一一來(lái)看下:
1.必須至少有一個(gè)操作數(shù)是用戶(hù)定義的類(lèi)型
這句話(huà)看不明白沒(méi)有關(guān)系,我們只需要記住它的目的就好了。它的主要目的是為了防止用戶(hù)為了標(biāo)準(zhǔn)類(lèi)型重載運(yùn)算符。比如將+重載成兩個(gè)數(shù)的差,而不是和。
這種限制對(duì)創(chuàng)造性有一定的影響,沒(méi)有那么靈活,但可以保證程序的正常運(yùn)行。不會(huì)出現(xiàn)一些反人類(lèi)的情況
2.不能違反運(yùn)算符原來(lái)的規(guī)則
這一點(diǎn)很好理解,比如+號(hào),它的運(yùn)算就是計(jì)算兩個(gè)數(shù)的和。需要有兩個(gè)操作數(shù),現(xiàn)在我們把它重載成一個(gè)操作數(shù),就是違法的。
P p; +p;
同樣,我們也不能修改運(yùn)算符的優(yōu)先級(jí),如果將加號(hào)運(yùn)算符重載成兩個(gè)類(lèi)相加,那么新的運(yùn)算符和原來(lái)的加號(hào)擁有一樣的優(yōu)先級(jí)。
3.不能創(chuàng)建新運(yùn)算符
這一點(diǎn)之前已經(jīng)說(shuō)過(guò)了,比如不能定義operator @等這種原來(lái)沒(méi)有的運(yùn)算符。
4.禁止名單
有一些運(yùn)算符是禁止重載的,如:sizeof, ., ::, ?:, typeid, const_cast, dynamic_cast, reinterpret_cast, static_cast
這些運(yùn)算符往往都有特殊的功能,直接從實(shí)現(xiàn)層面禁止重載。
5.部分運(yùn)算符只能通過(guò)成員函數(shù)重載
大多數(shù)運(yùn)算符都可以通過(guò)成員函數(shù)以及非成員函數(shù)進(jìn)行重載,但也有部分例外,只能通過(guò)成員函數(shù)重載,
如:
=:賦值運(yùn)算符(): 函數(shù)調(diào)用運(yùn)算符[]: 下標(biāo)運(yùn)算符->: 箭頭符號(hào)
這里的非成員函數(shù)看起來(lái)有些費(fèi)解,之后我們會(huì)遇到,主要是指友元函數(shù)。
到此這篇關(guān)于C++運(yùn)算符重載限制介紹的文章就介紹到這了,更多相關(guān)C++運(yùn)算符重載限制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于C++對(duì)象繼承中的內(nèi)存布局示例詳解
這篇文章主要給大家介紹了關(guān)于C++對(duì)象繼承中內(nèi)存布局的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
C語(yǔ)言中聯(lián)合體與共用體和枚舉使用語(yǔ)法示例
這篇文章主要介紹了C語(yǔ)言中聯(lián)合體與共用體和枚舉使用語(yǔ)法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-12-12
C++獲取本機(jī)登陸過(guò)的QQ號(hào)碼示例程序
這篇文章主要介紹了使用C++獲取本機(jī)登陸過(guò)的QQ號(hào)碼列表的程序示例,大家可以參考使用2013-11-11
C++ OpenCV單峰三角閾值法Thresh_Unimodal詳解
本文主要介紹了適合當(dāng)圖像的直方圖具有明顯單峰特征時(shí)使用,結(jié)合了三角法的原理而設(shè)計(jì)的圖像分割方法,感興趣的小伙伴可以了解一下2021-12-12
C語(yǔ)言 structural body結(jié)構(gòu)體詳解用法
C 數(shù)組允許定義可存儲(chǔ)相同類(lèi)型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是 C 編程中另一種用戶(hù)自定義的可用的數(shù)據(jù)類(lèi)型,它允許您存儲(chǔ)不同類(lèi)型的數(shù)據(jù)項(xiàng),結(jié)構(gòu)用于表示一條記錄,假設(shè)您想要跟蹤圖書(shū)館中書(shū)本的動(dòng)態(tài),您可能需要跟蹤每本書(shū)的下列屬性2021-10-10
C++淺析類(lèi)與對(duì)象基礎(chǔ)點(diǎn)
類(lèi)和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱(chēng)。對(duì)象是對(duì)客觀(guān)事物的抽象,類(lèi)是對(duì)對(duì)象的抽象。類(lèi)是一種抽象的數(shù)據(jù)類(lèi)型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域2022-07-07

