C++: this指標的用法,相關知識點
阿新 • • 發佈:2018-11-16
1. this指標只能在類的成員函式中呼叫,表示當前物件的地址;
void data::set_month(int mn)
{
month = mm;
this->month = mn;
(*this).month = mn;//三者等價
}
2. this指標只能在類的成員函式中使用,全域性函式和靜態函式都不能使用this;
實際上,類的成員函式預設的第一個引數為 T* const register this,
針對class A{public: int func(int p){}},
實際上func原型在編譯器看來為: int func(A* const register this, int p);
3. this指標在類的成員函式開始之前構造,在類的成員結束後清除,這是this指標的生命週期。
當呼叫一個類的成員函式時,編譯器將類的指標作為函式this引數傳遞過去,如:
A a;
a.func(10);
此時,編譯器將會編譯成:A::func(&a, 10);
編譯器通常會對this指標做一些優化,因此,this指標的傳遞效率比較高,像VC是由ecx暫存器來傳遞this指標引數的。
4. this指標引編譯器不同,放置的位置不同,可能是棧,可能是暫存器,甚至是全域性變數;
5. this指標是通過類的成員函式的首引數來傳遞的;
6. 【注】
7. 資源下載連結:https://download.csdn.net/download/sss_369/10762986