如何理解c this指標

2021-07-28 10:31:02 字數 902 閱讀 9189

建立於成員函式開始執行前,執行完後清除,而且它只能在靜態成員函式中有用,其它函式呼叫不了this指標。

指向物件的首位址

#include 

#include

using

namespace

std;

class student

void printstudent()

private:

char _name[20];

char _gender[4];

int _age;

};int main()

在main()函式中給了乙個學生s1,用初始化函式給出名字性別年齡,當然這是我室友的名字,隨手拿來用了,那麼接下來就是程式執行列印函式,而且很理想在螢幕上輸出了室友的資訊,現在需要考慮的就是為什麼s1的這些資訊可以就這樣輸出來,這裡便有了this指標,它會指向s1的位址,就像它知道我室友家在哪,然後讓初始化函式去我室友家並給我室友起了名字給了年齡什麼的,這裡好像有點不太恰當,對 在程式沒輸出結果前我們不知道this指向的那個位址住著的到底是誰,是指標帶著函式找到那個位址並給了住在那個位址裡的人如上面的一些資訊

1:引數壓棧:當成員函式的引數為可變時(遵循_cdecl呼叫約定)

2:ecx暫存器:當成員函式的引數固定時(遵循_thiscall呼叫約定)

this指標的特性:

1:型別:類型別*const

2:this指標並不是類本身的一部分,不影響sizeof(類)的大小 .

3:this指標是非靜態成員函式的乙個隱含指標形參,是編譯器自己給的,不能由程式設計師手動新增.

4:this 指標可以為null .

5:this 指標和引用的底層實現一樣但是類的概念在引用之前提出來所以沒有用引用代替this指標.

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...