亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中點操作符和箭頭操作符的使用詳解

2020-01-26 16:18:39
字體:
來源:轉載
供稿:網友

區別

C++中對于類來說,對于其中的成員,用點操作符.來獲得,

而對于一個指向類對象的指針來說,則用箭頭操作符->調用該指針所指向對象的成員。

當類定義->重載操作符后,則既可以用箭頭操作符,也可以用點操作符。

重載->操作符

重載箭頭操作符必須定義為類成員函數。沒有顯式形參(而且是類成員,唯一隱式形參是this)。->的右操作數不是表達式,而是對應類成員的一個標識符,由編譯器處理獲取成員工作。

重載箭頭操作符必須返回指向類類型的指針,或者返回定義了自己的箭頭操作符的類類型對象。

如果返回類型是指針,則內置箭頭操作符可用于該指針,編譯器對該指針解引用并從結果對象獲取指定成員。如果被指向的類型沒有定義那個成員,則編譯器產生一個錯誤。
如果返回類型是類類型的其他對象(或是這種對象的引用),則將遞歸應用該操作符。編譯器檢查返回對象所屬類型是否具有成員箭頭,如果有,就應用那個操作符;否則,編譯器產生一個錯誤。這個過程繼續下去,直到返回一個指向帶有指定成員的的對象的指針,或者返回某些其他值,在后一種情況下,代碼出錯。

代碼分析:

下面給出代碼,加深理解。

復制代碼 代碼如下:

#include <iostream>

 using namespace std;

 class A{
 public:
     void action()
     {
         cout<<"action in class A!"<<endl;
     }
 };

 class B{
         //A a;  
 public: 
     A a;
     A* operator->(){  
         return &a;  
     }  
     void action(){  
         cout << "Action in class B!" << endl;  
     }
 };

 class C{

 public:  
     B operator->(){  
         return b;  
     }  
     void action(){  
         cout << "Action in class C!" << endl;  
     }
 };

 int main()  
 {  
     C* pc = new C;  
     pc->action();  
     C c;  
     c->action();   
     return 0;  
 }

上面代碼輸出結果是:
Action in class C!
Action in class A!

對于代碼

復制代碼 代碼如下:

    C* pc = new C;
    pc->action();


輸出的結果是:Action in class C!
這是因為pc是類對象指針,此時的箭頭操作符使用的是內置含義,對pc解引用然后調用對象的成員函數action。

對于代碼:

復制代碼 代碼如下:

    C c;
    c->action();


可以這樣理解:

c是對象,c后面的箭頭操作符使用的是重載箭頭操作符,即調用類C的operator->()成員函數。此時返回的是類B的對象,所以調用類B的operator->()成員函數,B的operator->()返回的是指針,所以現在可以使用內置箭頭操作符了。對B的operator->()返回的指針進行解引用,然后調用解引用后的對象的成員函數action,此時調用的就是類A的action()。這里存在一個遞歸調用operator->()的過程,最后再使用一次內置含義的箭頭操作符。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜女主播在线直播| 久久香蕉国产线看观看av| 欧美激情视频免费观看| 亚洲国产精品久久久久久| 国产精品入口日韩视频大尺度| 成人激情电影一区二区| 一区二区成人av| 日韩av不卡电影| 久久久久久成人精品| 国产z一区二区三区| 亚洲精品福利免费在线观看| 亚洲va男人天堂| 久久五月天综合| 正在播放欧美视频| 国内精品一区二区三区| 久久久91精品国产一区不卡| 欧美性猛交xxxx免费看| 亚洲精品电影在线观看| 26uuu另类亚洲欧美日本一| 日韩最新免费不卡| 热re91久久精品国99热蜜臀| 欧美视频免费在线| 91在线免费观看网站| 久久久国产一区| 中文字幕日韩精品在线| 亚洲国产精品系列| 亚洲精品一区二区三区不| 国产亚洲a∨片在线观看| 日韩一级裸体免费视频| 97国产真实伦对白精彩视频8| 国产精品视频99| 久久久久久91香蕉国产| 欧美成人精品在线观看| 国产精品久久久久av免费| 欧美激情在线一区| 欧洲永久精品大片ww免费漫画| 国产主播精品在线| 中文字幕欧美亚洲| 中文字幕av一区中文字幕天堂| 亚洲激情第一页| 中文精品99久久国产香蕉| 亚洲美女性视频| 亚洲人成电影网站色…| 一区二区三区回区在观看免费视频| 国产精品久久久久久亚洲影视| 日韩中文字幕久久| 日韩av网站大全| 日韩精品极品视频免费观看| 成人欧美一区二区三区黑人孕妇| 欧美国产精品va在线观看| 亚洲精品99久久久久| 欧美极品美女电影一区| 亚洲精品乱码久久久久久按摩观| 日韩av免费在线播放| 日韩在线视频网| 亚洲色图第三页| 精品国产一区二区三区久久久| 国产精品欧美一区二区| 国产香蕉97碰碰久久人人| 亚洲欧洲美洲在线综合| 欧美综合在线观看| 国产91露脸中文字幕在线| 欧美二区在线播放| www.99久久热国产日韩欧美.com| 国产ts人妖一区二区三区| 国产欧美精品一区二区| 中文一区二区视频| 中文字幕欧美日韩va免费视频| 欧美日韩国产精品专区| 国产一区二区三区在线观看视频| 欧美日韩裸体免费视频| 91精品国产综合久久香蕉的用户体验| 国产精品亚洲аv天堂网| 疯狂欧美牲乱大交777| 国产精品稀缺呦系列在线| 欧美一级片一区| 国产在线拍揄自揄视频不卡99| 欧美在线观看网址综合| 亚洲欧美另类自拍| 国产欧美日韩高清| 日本成熟性欧美| 91久久久国产精品| 一区二区三区无码高清视频| 久久伊人免费视频| 欧美视频在线观看免费| www.日韩av.com| 欧美激情在线有限公司| 欧美性极品xxxx娇小| 亚洲成人精品视频| 91在线中文字幕| 亚洲另类激情图| 欧美精品成人在线| 亚洲国产成人在线播放| 日本电影亚洲天堂| 久久久久久久一区二区三区| 狠狠干狠狠久久| 欧美日韩国产页| 久久久久久久网站| 欧美精品一区在线播放| 日本一本a高清免费不卡| 国产精品91久久久| 96pao国产成视频永久免费| 久久久久久亚洲精品| 日韩精品福利网站| 亚洲最大成人在线| 国产午夜精品一区理论片飘花| 日韩美女写真福利在线观看| 欧美激情视频在线观看| 91精品国产一区| 日本在线精品视频| 91精品久久久久久久久久另类| 欧美一级大片在线观看| 91在线中文字幕| 热re99久久精品国产66热| 亚洲电影免费观看高清完整版在线观看| 久久精品电影网站| 日韩精品视频中文在线观看| 午夜精品一区二区三区在线视| 亚洲小视频在线观看| 久久97久久97精品免视看| 午夜精品一区二区三区在线播放| 亚洲国产欧美一区二区丝袜黑人| 国产视频在线一区二区| 亚洲欧美国内爽妇网| 欧美在线激情视频| 国产在线观看一区二区三区| 中文字幕精品一区久久久久| 91视频国产高清| 国产精品福利在线观看| 日韩中文第一页| 亚洲自拍偷拍视频| 欧美性高跟鞋xxxxhd| 国产精品综合久久久| 蜜月aⅴ免费一区二区三区| 久久精品国产v日韩v亚洲| 久久香蕉国产线看观看网| 国产亚洲欧洲高清一区| 国产精品日本精品| 亚洲男人天堂九九视频| 日韩av网站大全| 国产精品男女猛烈高潮激情| 国产色综合天天综合网| 欧美激情va永久在线播放| 国产不卡av在线| 欧美综合国产精品久久丁香| 91久久精品久久国产性色也91| 精品久久久久久久久国产字幕| 国内精品久久久久久中文字幕| 国产精品成人观看视频国产奇米| 亚洲欧美资源在线| 亚洲欧美中文日韩在线v日本| 91免费电影网站| 午夜免费日韩视频| 亚洲片在线观看| 清纯唯美亚洲综合| 欧美做受高潮电影o| 日韩有码在线观看| 久久久久久久国产精品视频| 精品视频在线导航| 在线亚洲国产精品网| 4444欧美成人kkkk| 日本精品久久久久影院| 久久全球大尺度高清视频| 欧美日韩在线视频一区二区|