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

C++無法重載點符號、::、sizeof等的原因

 更新時間:2016年05月22日 09:04:48   作者:weixueyuan  
這篇文章主要介紹了C++無法重載點符號、::、sizeof等的原因的相關(guān)資料,需要的朋友可以參考下

大多數(shù)的運算符能夠被程序員重載。例外的是:

    . (點符號) :: ?: sizeof

并沒有什么根本的原因要禁止重載?:。僅僅是因為,我沒有發(fā)現(xiàn)有哪種特殊的情況需要重載一個三元運算符。注意一個重載了 表達式1?表達式2:表達式3 的函數(shù),不能夠保證表達式2:表達式3 中只有一個會被執(zhí)行。

Sizeof 不能夠被重載是因為內(nèi)建的操作(built-in operations),諸如對一個指向數(shù)組的指針進行增量操作,必須依靠它??紤]一下:

  X a[10];
  X* p = &a[3];
  X* q = &a[3];
  p++; // p 指向a[4]
  // 那么p 的整型值必須比q 的整型值大出一個sizeof(X)

所以,sizeof(X)不能由程序員來賦予一個不同的新意義,以免違反基本的語法。

在N::m 中,無論N 還是m 都不是值的表達式;N 和m 是編譯器知道的名字,::執(zhí)行一個(編譯期的)范圍解析,而不是表達式求值。你可以想象一下,允許重載x::y 的話,x 可能是一個對象而不是一個名字空間(namespace)或者一個類,這樣就會導致——與原來的表現(xiàn)相反——產(chǎn)生新的語法(允許 表達式1::表達式2)。很明顯,這種復(fù)雜性不會帶來任何好處。

理論上來說,.(點運算符)可以通過使用和->一樣的技術(shù)來進行重載。但是,這樣做會導致一個問題,那就是無法確定操作的是重載了.的對象呢,還是通過.引用的一個對象。例如:

class Y {
  public:
  void f();
  // ...
};
class X { // 假設(shè)你能重載.
  Y* p;
  Y& operator.() { return *p; }
  void f();
  // ...
};
void g(X& x){
  x.f(); // X::f 還是Y::f 還是錯誤?
}

附上C++重載的一些總結(jié)

重載操作符的限制:

1 并不是所有的操作符都能被重載。除了. ,.* ,:: ,? : ,sizeof,typeid這幾個運算符不能被重載,其他運算符都能被重載
2 重載不能改變該運算符用于內(nèi)置類型時的函義,程序員不能改變運算符+用于兩個int型時的含義。
3 運算符函數(shù)的參數(shù)至少有一個必須是類的對象或者類的對象的引用。這種規(guī)定可以防止程序員運用運算符改變內(nèi)置類型的函義。
4 重載不能改變運算符的優(yōu)先級。
5 重載不能改變運算符的結(jié)合律。
6 重載不能改變運算符操作數(shù)的個數(shù)。比如+需要兩個操作數(shù),則重載的+也必須要有兩個操作數(shù)。

相關(guān)文章

  • Qt實現(xiàn)轉(zhuǎn)動輪播圖

    Qt實現(xiàn)轉(zhuǎn)動輪播圖

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)轉(zhuǎn)動輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C語言初階之數(shù)組詳細介紹

    C語言初階之數(shù)組詳細介紹

    大家好,本篇文章主要講的是C語言初階之數(shù)組詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++中使用FFmpeg適配自定義編碼器的實現(xiàn)方法

    C++中使用FFmpeg適配自定義編碼器的實現(xiàn)方法

    本文介紹了在C++中使用FFmpeg庫進行自定義編碼器適配的實現(xiàn)方法。文章通過具體的代碼示例,介紹了FFmpeg的基本使用方法和自定義編碼器的實現(xiàn)過程,幫助讀者了解如何在C++中進行音視頻編碼和解碼的開發(fā)工作,并能夠?qū)崿F(xiàn)自定義的編碼器適配
    2023-04-04
  • Qt5.9繼承QObject創(chuàng)建多線程實例

    Qt5.9繼承QObject創(chuàng)建多線程實例

    本文主要介紹了Qt5.9繼承QObject創(chuàng)建多線程實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++讀取WAV音頻文件的頭部數(shù)據(jù)的實現(xiàn)方法

    C++讀取WAV音頻文件的頭部數(shù)據(jù)的實現(xiàn)方法

    這篇文章主要介紹了C++讀取WAV音頻文件的頭部數(shù)據(jù)的實現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的方法,需要的朋友可以參考下
    2017-10-10
  • C++?ASIO實現(xiàn)異步套接字管理詳解

    C++?ASIO實現(xiàn)異步套接字管理詳解

    Boost?ASIO(Asynchronous?I/O)是一個用于異步I/O操作的C++庫,該框架提供了一種方便的方式來處理網(wǎng)絡(luò)通信、多線程編程和異步操作,本文介紹了如何通過ASIO框架實現(xiàn)一個簡單的異步網(wǎng)絡(luò)套接字應(yīng)用程序,需要的可以參考下
    2023-08-08
  • 純C語言實現(xiàn)火車售票系統(tǒng)

    純C語言實現(xiàn)火車售票系統(tǒng)

    這篇文章主要為大家詳細介紹了純C語言實現(xiàn)火車售票系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C語言進階教程之循環(huán)語句缺陷詳析

    C語言進階教程之循環(huán)語句缺陷詳析

    循環(huán)語句是用于重復(fù)執(zhí)行某條語句(循環(huán)體)的語句,它包含一個控制表達式,每循環(huán)執(zhí)行一次都要對控制表達式進行判斷,如果表達式為真,則繼續(xù)執(zhí)行循環(huán),這篇文章主要給大家介紹了關(guān)于C語言進階教程之循環(huán)語句缺陷的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • C語言 文件操作解析詳解及實例代碼

    C語言 文件操作解析詳解及實例代碼

    這篇文章主要介紹了C語言 文件操作解析詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • C++圖論之Bellman-Ford算法和SPFA算法的實現(xiàn)

    C++圖論之Bellman-Ford算法和SPFA算法的實現(xiàn)

    貝爾曼-福特算法(Bellman-Ford)是由理查德·貝爾曼和萊斯特·福特創(chuàng)立的,求解單源最短路徑問題的一種算法。SPFA 算法是 Bellman-Ford算法 的隊列優(yōu)化算法的別稱,通常用于求含負權(quán)邊的單源最短路徑。本文將詳解兩個算法的實現(xiàn),需要的可以參考一下
    2022-06-06

最新評論

公安县| 绥棱县| 顺平县| 汉川市| 宝兴县| 临泉县| 武夷山市| 临澧县| 封开县| 隆安县| 南皮县| 从江县| 兖州市| 喀喇沁旗| 石首市| 岳阳县| 黄龙县| 长沙县| 稷山县| 怀宁县| 武安市| 辰溪县| 鹤岗市| 桃园市| 沐川县| 股票| 万盛区| 宁武县| 吉林省| 永善县| 根河市| 钟祥市| 丹江口市| 龙山县| 治县。| 常德市| 偃师市| 宁强县| 连州市| 宝丰县| 清丰县|