C this指標 1 this介紹

2021-07-02 19:18:29 字數 1685 閱讀 3321

目錄

1.區分同名變數

2.返回物件的引用

3.關於this指標的注意事項

3.1不能賦值

3.2靜態函式中沒有this

3.3小心地delete this

c++中的this指標,在所有非靜態成員函式的呼叫中做為乙個隱藏引數進行傳遞,並且在函式體中可以做為乙個區域性變數使用。

this是乙個const指標,儲存當前物件的記憶體位址。 this指標在靜態成員函式中不能使用,因為靜態成員函式不需要使用任何物件進行呼叫。

對於class x, this指標的型別相當於x* const。 同理,如果x的乙個成員函式宣告為const,則this指標相當於const x *const。

下面這些例子顯示了this指標的各個使用場景。

當區域性變數名稱與成員變數名稱相同時

#include//case:區域性變數x(在setx函式中),與成員變數x相同

class test

void print()

};int main()

輸出:

x = 22

如果是對於建構函式,當引數名稱與成員名稱相同時,則也可以使用初始化列表來解決這個問題。

做為函式的返回值,返回正在被呼叫物件的引用。

test& test::func ()

#includeclass test

test &setx(int a)

test &sety(int b)

void print()

};int main()

輸出:

x = 11 y = 22

this指標是const指標,不能被賦值。

#includeusing namespace std;

class test

void change(test *t)

void print()

};int main()

編譯失敗。提示錯誤: 

in member function `void test::change(test*)': non-lvalue in assignment

刪除這一行後,執行輸出:

x = 5

這個在本人之前的這篇文章中,也有過說明。

#includeusing namespace std;

class test

static void fun1()

static void fun2()

};int main()

去掉這一行,執行輸出:

inside fun2()、

顯式delete this,可能導致記憶體異常

#includeusing namespace std;

class test

void setx(int a)

void sety(int b)

void destroy()

void print()

};int main()

編譯正常,但程式執行時發生異常。

this指標 C this指標

this 是 c 中的乙個關鍵字,也是乙個 const 指標,不可以更改指向。指向當前物件,通過它可以訪問當前物件的所有成員。include includeusing namespace std class girlfriend void introduce introduce函式在編譯器看來是這個...

函式1 this指向

當我們宣告乙個函式fun時,函式fun具有的屬性 方法如下 屬性 常見 1.name 2.length 3.arguments 物件,arguments.callee 4.caller 5.this 6.prototype 7.prototype 方法 常見 1.call 3.bind 4.tost...

c this 指標詳解

首先來觀察一段 class myclass int data const void tmyclass 我們知道類的成員函式在記憶體只有乙份拷貝,而類的資料成員 不考慮靜態成員 是每個物件都有自己的乙份,所以上述 中obj1和obj2呼叫data函式是同乙個函式,但它們擁有各自的資料,所以輸出結果為0...