對C this指標的理解

2021-08-22 04:35:00 字數 645 閱讀 3743

​ 我們都知道類的成員函式可以訪問類的資料(限定符只是限定於類外的一些操作,類內的一切對於成員函式來說都是透明的),那麼成員函式如何知道哪個物件的資料成員要被操作呢,原因在於每個物件都擁有乙個指標:this指標,通過this指標來訪問自己的位址。注:this指標並不是物件的一部分,this指標所佔的記憶體大小是不會反應在sizeof操作符上的。this指標的型別取決於使用this指標的成員函式型別以及物件型別。

this只能在成員函式中使用。全域性函式,靜態函式都不能使用this。實際上,成員函式預設第乙個引數為:

t* const

register

this

2.1 this指標的生命週期

this在成員函式的開始執行前構造的,在成員的執行結束後清除。

2.2 this指標如何傳遞給類中的函式和有事如何找到成員函式的?

this是通過函式引數的首引數來傳遞的。this指標是在呼叫之前生成的。 並且this指標只有在成員函式中才有定義。

class text

~text()

void seta_value(const

int a)

private:

int m_a_;

}

C this指標理解

1.this指標的用處 乙個物件的this指標並不是物件本身的一部分,不會影響sizeof 物件 的結果。請細品以下概念 this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在...

C this指標的理解

先要理解class的意思。class應該理解為一種型別,象int,char一樣,是使用者自定義的型別。雖然比int char這樣build in型別複雜的多,但首先要理解它們一樣是型別 用這個型別可以來宣告乙個變數,比如int x,myclass my等等。這樣就像變數x具有int型別一樣,變數my...

C this指標的理解

先要理解class的意思。class應該理解為一種型別,象int,char一樣,是使用者自定義的型別。雖然比int char這樣build in型別複雜的多,但首先要理解它們一樣是型別 用這個型別可以來宣告乙個變數,比如int x,myclass my等等。這樣就像變數x具有int型別一樣,變數my...