C 中的this指標

2021-10-03 03:32:56 字數 850 閱讀 2716

class

date

void

setday

(int year,

int month,

int day)

private

:int _year;

int _month;

int _day;

}int

main()

對於上述類,date類中有setdate與display兩個成員函式,函式體中沒有關於不同物件的區分,那當d1呼叫setdate函式 時,該函式是如何知道應該設定d1物件,而不是設定d2物件呢?

原因:c++中是通過引入this指標解決該問題。

c++編譯器給每個「成員函式「增加了乙個隱藏的指標引數,讓該指標指向當前呼叫該函式的物件,在函式體中所有成員變數的操作,都是通過該指標去訪問。只不過所有的操作對使用者是透明的,即使用者不需要來傳遞,編譯器自動完成。

this指標的型別:類型別* const。

this指標本質上其實是乙個成員函式的形參,是物件呼叫成員函式時,將物件位址作為實參傳遞給this 形參。所以物件中不儲存this指標。

this指標是成員函式第乙個隱含的指標形參,一般情況由編譯器通過ecx暫存器自動傳遞,不需要使用者傳遞。

this指標的作用域是在非靜態成員函式內部,在呼叫非靜態成員函式時構造this指標,在非靜態成員函式呼叫結束後銷毀this指標。

this指標存在棧上。

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的原因。下面就來談談指標的應用以及需要注意的一些問題,裡面也許就有你平時沒有注意到的問題,希望能幫助各位讀者理解好指標。一 我們先來回憶一下指標的概念吧,方...