C 中的this指標

2021-08-10 08:25:44 字數 1264 閱讀 2328

在這裡,我有乙個問題想問大家,在funtest()函式中,我建立了兩個不同物件,在呼叫同乙個類的時候,它們究竟怎麼區分不同的物件呢?

對於類成員函式而言,並不是乙個物件對應乙個單獨的成員函式體,而是此類的所有物件共用這個成員函式體。 當程式被編譯之後,此成員函式位址即已確定。而成員函式之所以能把屬於此類的各個物件的資料區別開, 就是靠這個this指標。函式體內所有對類資料成員的訪問, 都會被轉化為this->資料成員的方式。

void

print()

而乙個物件的this指標並不是物件本身的一部分,不會影響sizeof(「物件」)的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加上this的,它作為非靜態成員函式的隱含形參,對各成員的訪問均通過this進行。

1、this指標的型別 類型別* const

2、this指標並不是物件本身的一部分,不影響sizeof的結果。

3、this的作用域在類成員函式的內部(不嚴謹)。

4、this指標是類成員函式的第乙個預設隱含引數,編譯器自動維護傳遞,類編寫者不能顯式傳遞。

5、只有在類的非靜態成員函式中才可以使用this指標,其它任何函式都不可以。

a、thiscall只能夠用在類的成員函式上。

b、引數從右向左壓棧。

c、如果引數個數確定,this指標通過ecx傳遞給被呼叫者;如果引數不確定(_cdecl),this指標在所有引數被壓棧後壓入堆疊。

d、對引數個數不定的,呼叫者清理堆疊,否則函式自己清理堆疊。

C 中的this指標

當乙個成員函式被呼叫時,自動向它傳遞乙個隱含的引數,該引數是乙個指向接 受該函式的呼叫的物件的指標,在程式中可以使用關鍵字this指標來引用改制鎮,因此稱該指標為this指標。this指標是c 實現封裝的一種機制,它將成員和用於操作這些成員的成員函式聯絡在一起。例如 location類的成員函式in...

C 中的this指標

1.this 指標的引入 每個成員函式 static函式外 都有乙個額外的隱含的this指標,乙個類物件在條用成員函式時this指標初始化為呼叫函式物件的位址。例1 sales item.h class sales item sales item.cpp bool sales item same i...

C 中的指標

在學習c c 過程中,指標是乙個比較讓人頭痛的問題,稍微不注意將會是程式編譯無法通過,甚至造成宕機。在程式設計過程中,指標也往往是產生隱含bug的原因。下面就來談談指標的應用以及需要注意的一些問題,裡面也許就有你平時沒有注意到的問題,希望能幫助各位讀者理解好指標。一 我們先來回憶一下指標的概念吧,方...