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胖墩墩兒 和 懶癌研究中心 的答案挑個...