this指標抽象比喻
當我們在進入乙個房子之後, 可以看見房子裡的桌子,椅子、 地板等,但是看不到房子的全貌。對於乙個類的例項來說, 你可以看到它的成員 函式、 成員 變數, 但是例項本身呢? this是乙個指標, 它時時刻刻指向這個例項。
乙個物件的多個成員就可看作是這個物件所擁有的桌子,椅子、 地板等;而在很多個物件中間,我們為了證明某個成員是自己的成員,而不是其他物件的成員,我們同樣需要給這些成員取上名字。在c++中,我們利用this指標幫助物件做到這一點his指標記錄每個物件的記憶體位址,然後通過運算子->訪問該物件的成員。
程式例程
話不多說我們通過乙個程式來體現this指標的實際用處:
#define _crt_secure_no_warnings 1#include#includeusing namespace std;
class student
private:
char _name[20];
char _gender[15];
int _age;
};
int main()結果顯示如下:
通過這個輸出結果,我們可以看到,物件s1、s2、s3、的記憶體位址和this指標的位址分別是一模一樣的。這就說明了this指標變數記錄的是當前物件的記憶體位址,即this指標指向當前的物件!
在程式裡,我們就用了this指標的這個屬性,即:this->i=x;這句話就表示把x的值賦值給當前的物件的私有成員函式i。
this指標特性詳解 :
1、 this指標的型別 類型別* const
2、 this指標並不是物件本身的一部分, 不影響sizeof的結果。
3、 this的作用域在類成員 函式的內部(不嚴謹) 。
4、 this指標是類成員 函 數的第乙個預設隱含引數, 編譯器自 動維護傳遞,類編寫者不能顯式傳遞。
5、 只 有在類的非靜態成員 函 數中 才可以 使用 this指標,其它任何函式都不可以 。
this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說, 即使你沒有寫上this指標,編譯器在編譯的時候也是加上this的,它作為非靜態成員函式的隱含形參,對各成員的訪問均通過this進行。
this指標的使用
一種情況就是,在類的非靜態成員函式中返回類物件本身的時候,直接使用 return *this;
另外一種情況是當引數與成員變數名相同時,如this->n = n 。
C 中this指標的用法
1 為什麼引入this指標?最簡單的應用場景就是 當我們在類中定義了乙個變數,同時在類成員函式中定義了同一變數時,也就是說變數名重複時,但是我們想使用類中定義的變數,這個時候我們該怎麼辦呢?這個時候就是this指標大顯身手的時候了。為此我們引入this指標的概念。2 this指標的使用。乙個物件的t...
C 中this指標的用法
this指標只能在乙個類的成員函式中呼叫,它表示當前物件的位址。下面是乙個例子 void date setmonth int mn 1.this只能在成員函式中使用。全域性函式,靜態函式都不能使用this。實際上,成員函式預設第乙個引數為t const register this。如 class a...
C 中this指標的用法詳解
1.this指標的用處 乙個物件的this指標並不是物件本身的一部分,不會影響sizeof 物件 的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加...