1. 程式人生 > >C++: this指標的用法,相關知識點

C++: this指標的用法,相關知識點

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