this指標的作用:因為c++中的成員資料和成員函式是分開的,非內聯成員函式只生成乙份例項,所有物件共享非內聯成員函式,哪這一塊**是如何區分那個物件呼叫自己的呢?
這時候this指標就是可以區別出哪個物件呼叫的這一塊**,this指標指向被呼叫的成員函式所屬的物件,this指標永遠指向當前物件
怎麼確定成員函式和成員資料是分開的,看如下例子:
#includeusing namespace std;
class fun1
;class fun2
int val;
};class fun3
void test2()
int val; };
int main()
結果如下:
結果都為4說明函式和資料是分開的,成員函式在另外的地方開闢記憶體
注意:靜態成員函式內部沒有this指標,靜態成員函式不能操作非靜態成員變數
c++對普通成員函式的內部處理
#includeusing namespace std;
//這是乙個person類
class person
person getv()
static void printfper()
int v;
};int main()
//c++編譯器內部處理
struct person
;void person_constructor(person* pthis, int v)
person person_getv(person* pthis)
static void person_printfper()
int main()
this指標的使用當形參和成員變數同名時,可用this指標來區分
在類的非靜態成員函式中返回物件本身,可使用return *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的原因。下面就來談談指標的應用以及需要注意的一些問題,裡面也許就有你平時沒有注意到的問題,希望能幫助各位讀者理解好指標。一 我們先來回憶一下指標的概念吧,方...