C 中的this指標的注意事項

2021-10-22 20:59:03 字數 1006 閱讀 9842

this是c++中的乙個關鍵字,實質是乙個const指標,指向當前物件,通過它可以訪問當前物件的所有成員。

所謂當前物件就是正在使用的物件。例如:p1.speak(); p1 就是當前使用的物件,this就是指向p1。

注意:​ 友元函式沒有this指標,因為友元函式不是類中的成員函式,只有成員函式才有this指標(除靜態成員函式外)。

#include#includeusing namespace std;

class person

public:

int age;

string name;

}int main()

如上述程式或者友元函式中具有與本類中成員變數名相同的成員變數,如果不使用this指標來指代本類中的成員變數,容易產生二義性。

注意:this 是乙個指標,要用->來訪問成員變數或成員函式。

this 雖然用在類的內部,但是只有在物件被建立以後才會給 this 賦值(當前使用物件的位址),並且這個賦值的過程是編譯器自動完成的,不需要使用者干預。

this 是 const 指標,它的值是不能被修改的,一切企圖修改該指標的操作,如賦值、遞增、遞減等都是不允許的。

this 只能在成員函式內部使用,用在其他地方沒有意義,也是非法的。

只有當物件被建立後 this 才有意義,因此不能在 static 成員函式中使用

this 實際上是成員函式的乙個形參,在呼叫成員函式時將物件的位址作為實參傳遞給 this。不過 this 這個形參是隱式的,它並不出現在**中,而是在編譯階段由編譯器默默地將它新增到引數列表中。

this 作為隱式形參,本質上是成員函式的區域性變數,所以只能用在成員函式的內部,並且只有在通過物件呼叫成員函式時才給 this 賦值。

成員函式最終被編譯成與物件無關的普通函式,除了成員變數,會丟失所有資訊,所以編譯時要在成員函式中新增乙個額外的引數,把當前物件的首位址傳入,以此來關聯成員函式和成員變數。這個額外的引數,實際上就是 this,它是成員函式和成員變數關聯的橋梁。

c語言指標注意事項

這幾天對c語言的指標溫習了下,感覺理解又更深入了一步 c語言的精髓是指標我想確實一點都不錯,但是在使用的時候有很多要注意的地方,大概總結一下 1.指標指向常量區,是不能修改其值的 比如 char p abcfd char ptr abcfd p 1 c 此時會報錯,因為 abcfd 為常量區,其值是...

C 中push back的注意事項

c 中容器中的push back用的時候,容器的大小不能給定 比如說 如果要用push back來對資料進行儲存,那麼定義容器的時候不能定義容器的大小 vectorg v1 g v1.push back 1 如果定義了大小就需要用過載運算子對資料進行儲存 vectorg v2 1 g v2 0 1 ...

學習指標注意事項

宣告指標的一般形式 資料型別 指標變數名 1 在初始化時賦值 2 在後期賦值 1 通過變數名訪問乙個變數是直接的,通過指標訪問乙個變數是間接的 2 p i 意思是取變數i的位址賦給變數p 1 指標變數名是p,而不是 p 2 指標變數不可以直接賦值 int a 100 int p p 100 編譯不能...