簡體   English   中英

重載operator - >訪問數據成員

[英]overloading operator -> to access data member

我有一個關於以下關於重載的示例程序的問題 - >運算符,在C ++教程中是相同的:

 5     class myclass
 6     {
 7         public:
 8         int i;
 9
10         myclass *operator->()
11         {return this;}
12     };
13
14     int main()
15     {
16         myclass ob;
17
18         ob->i = 10;
19         cout << ob.i << " " << ob->i << endl;
20
21         return 0;
22     }

$ ./a.out
10 10

我試圖了解第18行是如何工作的。 我理解“ob”不是一個指針,但由於“class myclass”定義了運算符“ - >”,“ob-> i”是有效的(語法),到目前為止還不錯。 但是,“ob->”返回一個指針,我看不到如何取消引用它來訪問成員“i”並進行設置。

我假設上面的解釋也將解釋第19行“ob-> i”是如何打印為int的。

艾哈邁德,謝謝你。

operator->在一個鏈中被調用,直到它不再被調用 - 在你的情況下,它實際上被調用了兩次 - 一次,你的對象上的重載操作符,它返回一個指針,第二次,內置的操作符,取消引用指針並訪問該成員。

x->y等效於x.operator->()->y如果x是一個類對象並且找到了重載的成員operator->

我希望它能從中得到更清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM