C 中this指標什麼情況下是必須要用的?

時間 2021-05-12 06:17:42

1樓:Seeman

沒有什麼語法規則要求必須使用this。只有在區域性變數和成員變數同名,需要告訴編譯器,變數是區域性變數還是成員變數,需要使用this。但是這種情況,我認為是設計出了問題,盡量規避同名。

而不是使用this來解決。c++有很多trick,但是不是給廣大程式設計師在日常工作中使用的。盡量規避。

2樓:shzy

在類的內部的成員函式,需要返回this指標應該很常見吧。

為了同意風格你也可以enable_shared_from_this 返回指向自身的shared_ptr

3樓:迴廊識路

若構造的類為模板類,那麼派生類不可以直接使用繼承到的基類資料和方法,需要通過this指標使用。否則,在使用一些較新的編譯器(實測MSVC14.1)時,會報「找不到識別符號」錯誤。

4樓:huan

this這個關鍵字,表達的語義是什麼?

表達的是:在物件方法中,隱含的乙個變數,表示該物件的指標。

什麼情況下必須使用?

需要明確這個語義、不用就會有混淆的情況下。比如物件方法中有個變數 test,而類也有個字段命名為test,為了明確使用哪個 test ,需要加上 this。 如果不加,可能會出現編譯錯誤。

需要在物件方法中使用物件指標的時候。比如在物件方法中,需要以自身物件例項作為引數例項化乙個類的時候。如果不用 this,例項化不了。

5樓:Milo Yip

過載(復合)賦值運算子通常返回 *this。

把自己作為函式實參。如 auto child = new Node(this);中,構建函式的形參為父節點的指標。

在奇異遞迴模板模式(Curiously recurring template pattern)中,基類把自己向下轉型至派生類。

6樓:石大頭

你乙個類繼承了乙個類模板,想在子類中呼叫乙個父類的成員函式,但是模板可能特化為沒有這個成員函式,你直接呼叫可能報錯。這時,用「this->成員函式名」來呼叫可指明你欽定是有這個成員函式的。也可以通過using來強制宣告

7樓:

額,想到一種情況。。。

你的member裡有個變數叫nPapapaNum,你的member函式裡也有個變數叫nPapapaNum,這時候你想把區域性的nPapapaNum賦值給member的nPapapaNum就要這麼寫了。。。

this->nPapapaNum = nPapapaNum;

什麼情況下使用 C 更快,什麼情況下使用 Matlab 更快?

MATLAB 內建的數值計算函式大部分都支援多執行緒,如果你的任務是高密集的浮點計算,且能用 MATLAB 的內建函式流暢處理的話,這個時候寫的夠好的 MATLAB 程式工作起來就像乙個優化程度比較高的多執行緒 C 或 Fotran 程式,想在同一臺機器上用單執行緒的 C 程式更快基本不可能 MAT...

設計Qt類時,什麼情況下QWidget指標需要設計為類成員變數?

軟體自由職業者 1 你建立的QPushButton例項是在記憶體堆上的,變數只是這個堆的位址或者別名,定義了該變數或者不定義該變數它都一直存在的 定義變數只是便於訪問該例項物件而已,與記憶體洩漏沒有關係的 至於變數是定義成類成員變數,還是函式區域性變數,純粹看訪問便利的作用域 2 Qt的記憶體管理非...

什麼情況下用England,什麼情況下用Britain?兩者有什麼區別?

Yupeng 同級別比較 UK等同於中國 Britain相當於中國大陸 England相當於東部沿海地區。所以,你在蘇格蘭跟蘇格蘭人說,我超級喜歡England,相當於你在四川跟四川人說,我超級喜歡你們火鍋裡的涮羊肉蘸麻醬。 郭力特 常識問題,給 瘦嘟嘟兒and胖墩墩兒 和 懶癌研究中心 的答案挑個...