我們知道,c++中成員變數和成員函式是分開儲存的,每乙個非靜態成員函式只會誕生份函式例項,也就是說多個同型別的物件會共用一塊**(彙編角度看)
那麼問題是:這一塊**如何區分是哪個物件呼叫自己的呢?
c++通過提供特殊的物件指標——this指標。可以解決上述的問題,this指標指向被呼叫成員函式的所屬的物件。
這句話怎麼理解呢?(每當我們建立乙個物件的時候,編譯器會自動提供乙個this指標指向呼叫了類的成員函式的物件)
注意事項:
1.this指標是隱含在每乙個非靜態成員函式內的一種指標(也就是說靜態成員函式內沒有this指標)
2.this指標是不需要定義的,直接使用即可。
this指標的作用:
1.當形參和變數同名的時候,可用this指標來區分。
2.在類的非靜態成員函式中返回物件本身,可使用return *this。
1 #include 2using
namespace
std;34
class
person512
13 person& personaddperson(person &p) //
引用返回
1419
20int
age;
21};
2223
//1.解決名稱衝突
24void test_01(void)25
2930
//2.返回物件本身,用*this
31void test_02(void)32
4041
int main(void)42
辨析:值返回和引用返回的細微差別。
1 person personaddperson(person &p) //值返回2{3
this->age +=p.age;45
return *this;//
因為持續的追加,需要返回p2物件本身
6
值返回的時候,this->age = (p2.age + p1.age) + p1.age = 20;返回的*this只表示(p2.age + p1.age)中的p2.age ,因為this指向p2。
引用返回的時候,this->age = (p2.age + p1.age) + p1.age = 30;返回的*this表示(p2.age + p1.age)結果的位址。
指標的概念
第一章。指標的概念 指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 int ptr 2 c...
指標的概念
指標的概念 1.指標 pointer。所謂指標,就是乙個位址。2.指標變數,存放指標型別資料的變數。指標和指標變數一定要區別開來,指標變數就是乙個儲存指標以及位址資料的變數,而指標指的是被儲存位址。3.定義 int p 定義了乙個p,存放乙個int 型別的位址。型別決定了讀取資料時讀取多少個位元組。...
用於推薦系統評估的概念與指標(2)
建立衡量日常生活級別新穎性的指標並非易事。新穎性等級1的衡量必須考慮系統上下文中的資訊,以便衡量使用者已知和未知的內容。系統級別的新穎性有許多定義。簡單來說,對使用者而言,新專案是指使用者不知道或者知道很少的專案。有人認為,新穎性是指推薦系統 使用者不知道且通過其他渠道也不會發現的專案。新穎性也被定...