C 解引用 和箭頭 運算子的過載

2021-07-27 13:15:42 字數 644 閱讀 4120

1、箭頭運算子必須是類的成員函式。解引用運算子一般也應該宣告為類的成員函式,但不是必須。

2、箭頭用算符返回值必須是乙個指標,或者是乙個過載了箭頭運算子的物件。

a)如果返回的是乙個指標將呼叫內建的箭頭運算子。執行相當於(*(p.operator->()).mem;的操作。

b)如果返回是乙個過載了箭頭運算子的物件,則繼續對該物件呼叫其過載了的箭頭運算子,直到返回的是乙個指標,將對該指標呼叫a)的操作。操作相當於(*(p.operator->().operator->())).mem;

總的來說過載的箭頭運算子就是為了改變從哪個物件中獲取成員。

下面是乙個例子,儘管這個例子不是特別有用。

class a

a* operator->()

int geta()

int getb()

private:

int a=0;

int b=1;

};std::ostream& operator<<(std::ostream &os,const a& a)

{ os

C 引用 與 運算子過載

c 中,引用其實還是靠指標實現的 為什麼要引入引用呢?c 之父說,最初是為了實現運算子過載方便,下面舉個例子 例如 c a b是可以接受的寫法,而c a b 就不是很方便而且有歧義了 那麼下面說一下,哪些運算子過載必須用引用呢 運算子,它本身的意義是 自增,並返回自增後的值 所以就要返回自己,而不是...

C 中點運算子和箭頭運算子的區別

ps 需要快速看結論的,直接看文末總結歸納,需要理解的可以從文首開始看。p member執行為p offset member 目標的記憶體位址 s.member變成訪問 s offset member 目標的記憶體位址 因此實際上功能完全一致,看起來 p member更加直接一些,只不過s.memb...

C 過載 和 運算子

流提取運算子 和流插入運算子 注意,我們到目前為止,必須呼叫tostring 函式返回乙個表示rational物件的字串,再把它顯示出來。例如,為了顯示rational 物件r,要編寫一下 形式1 cout r.tostring 而不能直接使用 形式2cout r 但我們平時見到的int doubl...