最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++重載運(yùn)算符的規(guī)則詳解

 更新時(shí)間:2013年10月15日 08:48:37   作者:  
運(yùn)算符重載函數(shù)可以是類的成員函數(shù),也可以是類的友元函數(shù),還可以是既非類的成員函數(shù)也不是友元函數(shù)的普通函數(shù)

(1)C++不允許用戶自己定義新的運(yùn)算符,只能對(duì)已有的C++運(yùn)算符進(jìn)行重載。
例如,有人覺得BASIC中用“* *”作為冪運(yùn)算符很方便,也想在C++中將“* *”定義為冪運(yùn)算符,用“3* *5”表示35,這是不行的。

(2)C++允許重載的運(yùn)算符
C++中絕大部分運(yùn)算符都是可以被重載的。

不能重載的運(yùn)算符只有5個(gè):

.             (成員訪問運(yùn)算符)

.*            (成員指針訪問運(yùn)算符)

::             (域運(yùn)算符)

sizeof    (長(zhǎng)度運(yùn)算符)

?:            (條件運(yùn)算符)

前兩個(gè)運(yùn)算符不能重載是為了保證訪問成員的功能不能被改變,域運(yùn)算符合sizeof運(yùn)算符的運(yùn)算對(duì)象是類型而不是變量或一般表達(dá)式,不具備重載的特征。

(3)重載不能改變運(yùn)算符運(yùn)算對(duì)象(即操作數(shù))的個(gè)數(shù)。
如,關(guān)系運(yùn)算符“>”和“<”等是雙目運(yùn)算符,重載后仍為雙目運(yùn)算符,需要兩個(gè)參數(shù)。運(yùn)算符”+“,”-“,”*“,”&“等既可以作為單目運(yùn)算符,也可以作為雙目運(yùn)算符,可以分別將它們重載為單目運(yùn)算符或雙目運(yùn)算符。

(4)重載不能改變運(yùn)算符的優(yōu)先級(jí)別。
例如”*“和”/“優(yōu)先級(jí)高于”+“和”-“,不論怎樣進(jìn)行重載,各運(yùn)算符之間的優(yōu)先級(jí)不會(huì)改變。有時(shí)在程序中希望改變某運(yùn)算符的優(yōu)先級(jí),也只能使用加括號(hào)的方法強(qiáng)制改變重載運(yùn)算符的運(yùn)算順序。

(5)重載不能改變運(yùn)算符的結(jié)合性。
如,復(fù)制運(yùn)算符”=“是右結(jié)合性(自右至左),重載后仍為右結(jié)合性。

(6)重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù)
否則就改變了運(yùn)算符參數(shù)的個(gè)數(shù),與前面第(3)點(diǎn)矛盾。

(7)重載的運(yùn)算符必須和用戶定義的自定義類型的對(duì)象一起使用,其參數(shù)至少應(yīng)有一個(gè)是類對(duì)象(或類對(duì)象的引用)。
也就是說,參數(shù)不能全部是C++的標(biāo)準(zhǔn)類型,以防止用戶修改用于標(biāo)準(zhǔn)類型數(shù)據(jù)成員的運(yùn)算符的性質(zhì),如下面這樣是不對(duì)的:

復(fù)制代碼 代碼如下:

int operator + (int a,int b)
{
        return(a-b);
}

原來運(yùn)算符+的作用是對(duì)兩個(gè)數(shù)相加,現(xiàn)在企圖通過重載使它的作用改為兩個(gè)數(shù)相減。

如果允許這樣重載的話,如果有表達(dá)式4+3,它的結(jié)果是7還是1呢?顯然,這是絕對(duì)要禁止的。

(8)用于類對(duì)象的運(yùn)算符一般必須重載,但有兩個(gè)例外,運(yùn)算符”=“和運(yùn)算符”&“不必用戶重載。
復(fù)制運(yùn)算符”=“可以用于每一個(gè)類對(duì)象,可以用它在同類對(duì)象之間相互賦值。因?yàn)橄到y(tǒng)已為每一個(gè)新聲明的類重載了一個(gè)賦值運(yùn)算符,它的作用是逐個(gè)復(fù)制類中的數(shù)據(jù)成員

地址運(yùn)算符&也不必重載,它能返回類對(duì)象在內(nèi)存中的起始地址。

(9)應(yīng)當(dāng)使重載運(yùn)算符的功能類似于該運(yùn)算符作用于標(biāo)準(zhǔn)類型數(shù)據(jù)時(shí)候時(shí)所實(shí)現(xiàn)的功能。
例如,我們會(huì)去重載”+“以實(shí)現(xiàn)對(duì)象的相加,而不會(huì)去重載”+“以實(shí)現(xiàn)對(duì)象相減的功能,因?yàn)檫@樣不符合我們對(duì)”+“原來的認(rèn)知。

(10)運(yùn)算符重載函數(shù)可以是類的成員函數(shù),也可以是類的友元函數(shù),還可以是既非類的成員函數(shù)也不是友元函數(shù)的普通函數(shù)。

相關(guān)文章

  • C++引用、內(nèi)聯(lián)函數(shù)與nullptr超全解析(新手避坑指南)

    C++引用、內(nèi)聯(lián)函數(shù)與nullptr超全解析(新手避坑指南)

    這篇文章主要介紹了C++引用、內(nèi)聯(lián)函數(shù)與nullptr的相關(guān)資料,引用提供別名,簡(jiǎn)化代碼和提高性能,內(nèi)聯(lián)函數(shù)通過減少棧幀開銷優(yōu)化性能,但不能濫用,nullptr替代NULL,提供類型安全的空指針表示,需要的朋友可以參考下
    2025-12-12
  • C++內(nèi)存模型與名稱空間概念講解

    C++內(nèi)存模型與名稱空間概念講解

    這篇文章主要介紹了C++內(nèi)存模型與名稱空間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • VScode上配置 c語(yǔ)言環(huán)境的圖文教程

    VScode上配置 c語(yǔ)言環(huán)境的圖文教程

    這篇文章主要介紹了配置VScode c語(yǔ)言環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • C/C++中memset,memcpy的使用及fill對(duì)數(shù)組的操作

    C/C++中memset,memcpy的使用及fill對(duì)數(shù)組的操作

    這篇文章主要介紹了C/C++中memset,memcpy的使用及fill對(duì)數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C++?OpenMP簡(jiǎn)單介紹

    C++?OpenMP簡(jiǎn)單介紹

    這篇文章主要介紹了C++?OpenMP簡(jiǎn)介,OpenMP?還支持自定義數(shù)據(jù)類型的歸約操作,需要通過omp?declare?reduction指令來聲明自定義操作符和數(shù)據(jù)類型的歸約方式,感興趣的朋友一起看看吧
    2023-05-05
  • C++之list容器的解析與實(shí)現(xiàn)教程

    C++之list容器的解析與實(shí)現(xiàn)教程

    文章介紹了C++?STL中l(wèi)ist容器的特性:基于雙向循環(huán)鏈表,插入刪除高效但不支持排序,需用vector排序,迭代器模擬指針行為,刪除導(dǎo)致局部失效,對(duì)比vector,list適合動(dòng)態(tài)數(shù)據(jù),vector適合隨機(jī)訪問
    2025-09-09
  • 探討:程序在內(nèi)存中的分配(常量,局部變量,全局變量,程序代碼)問題

    探討:程序在內(nèi)存中的分配(常量,局部變量,全局變量,程序代碼)問題

    本篇文章是對(duì)程序在的內(nèi)存中分配(常量,局部變量,全局變量,程序代碼)的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言 指針數(shù)組詳解及示例代碼

    C語(yǔ)言 指針數(shù)組詳解及示例代碼

    本文主要介紹C語(yǔ)言 指針數(shù)組,這里提供詳細(xì)的資料和簡(jiǎn)單示例代碼以便大家學(xué)習(xí)參考,有需要學(xué)習(xí)的小伙伴可以參考下
    2016-08-08
  • 詳解C語(yǔ)言中strpbrk()函數(shù)的用法

    詳解C語(yǔ)言中strpbrk()函數(shù)的用法

    這篇文章主要介紹了詳解C語(yǔ)言中strpbrk()函數(shù)的用法,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 用pybind11封裝C++實(shí)現(xiàn)的函數(shù)庫(kù)的方法示例

    用pybind11封裝C++實(shí)現(xiàn)的函數(shù)庫(kù)的方法示例

    這篇文章主要介紹了用pybind11封裝C++實(shí)現(xiàn)的函數(shù)庫(kù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評(píng)論

舞阳县| 黑山县| 南和县| 新化县| 咸阳市| 阿坝| 苏尼特左旗| 工布江达县| 兴城市| 镶黄旗| 锡林郭勒盟| 博罗县| 花莲市| 保德县| 荔波县| 常熟市| 大宁县| 濮阳县| 西华县| 津市市| 弋阳县| 九寨沟县| 齐齐哈尔市| 额济纳旗| 龙川县| 南华县| 化德县| 通化市| 济南市| 长泰县| 青州市| 涿州市| 台南县| 海盐县| 宜春市| 内黄县| 长阳| 浦江县| 台州市| 浦东新区| 通许县|