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

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

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

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

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

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

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

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

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

sizeof    (長度運(yùn)算符)

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

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

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

(4)重載不能改變運(yùn)算符的優(yōu)先級別。
例如”*“和”/“優(yōu)先級高于”+“和”-“,不論怎樣進(jìn)行重載,各運(yùn)算符之間的優(yōu)先級不會改變。有時在程序中希望改變某運(yùn)算符的優(yōu)先級,也只能使用加括號的方法強(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ù)的個數(shù),與前面第(3)點(diǎn)矛盾。

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

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

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

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

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

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

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

(9)應(yīng)當(dāng)使重載運(yùn)算符的功能類似于該運(yùn)算符作用于標(biāo)準(zhǔn)類型數(shù)據(jù)時候時所實現(xiàn)的功能。
例如,我們會去重載”+“以實現(xiàn)對象的相加,而不會去重載”+“以實現(xiàn)對象相減的功能,因為這樣不符合我們對”+“原來的認(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)資料,引用提供別名,簡化代碼和提高性能,內(nèi)聯(lián)函數(shù)通過減少棧幀開銷優(yōu)化性能,但不能濫用,nullptr替代NULL,提供類型安全的空指針表示,需要的朋友可以參考下
    2025-12-12
  • C++內(nèi)存模型與名稱空間概念講解

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

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

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

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

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

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

    C++?OpenMP簡單介紹

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

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

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

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

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

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

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

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

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

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

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

最新評論

渝中区| 西畴县| 德江县| 梓潼县| 闻喜县| 涿州市| 朝阳县| 清河县| 嘉黎县| 扶余县| 盐津县| 周至县| 梁山县| 勃利县| 定结县| 阿拉善右旗| 固原市| 岑溪市| 平阳县| 屯留县| 柯坪县| 咸阳市| 神木县| 广东省| 博客| 前郭尔| 正定县| 克拉玛依市| 朝阳区| 孝感市| 吉隆县| 九龙城区| 庆城县| 淮南市| 土默特右旗| 图木舒克市| 镇江市| 乌鲁木齐县| 平湖市| 彭州市| 怀远县|