this指標的一些特性
1它並不是物件本身的一部分,不影響物件的結果。且它的作用域是在類的內部。
當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。例如:呼叫data.setmonth(9)等價於setmonth(&data,9)
2 this 指標可以儲存當前物件的位址
3 使用
this指標只能在成員函式中使用
只有獲得乙個物件後,才能通過物件使用指標
在類的非靜態成員函式中返回類物件本身的時候,直接用return*this;
當引數與成員變數名相同時,如 this-> n =n;(不能寫成n=n)
4作用this指標,它作為非靜態成員函式的隱含形參,對各成員的訪問都是通過this指標。成員函式之所以能對此類的各個物件的資料區別開來,就是靠this指標,函式體裡面對資料成員的訪問,都會轉化為this->資料成員的形式。
this指標記錄每個物件的記憶體位址,通過「->」訪問該物件的成員
例1
程式中this指標的使用分析:
a.物件point1呼叫point 類中的movepoint函式的時候,point1物件的位址
傳遞給了this指標。
b movepoint函式的原型應該是void movepoint(pointthis, int a, int b),第乙個
引數是應該是指向該類物件的指標,定義函式成員的時候沒有看到是因為,
這個引數在類中是隱含的,這樣point1物件的位址傳給了this指標.
所以movepoint函式顯式的寫為:
void movepoint(pointthis, int a, int b)
c 可知point1物件呼叫該函式後,point1物件的資料成員被更新了值。過程如下:
point1.x+ = a; point1.y+ = b;
類的例項就是類的物件
例2
a.set(9)等同於set(&a,9)
this->i=x;這句話就表示把x的值賦值給當前的物件的私有成員函式i。也就是把9的值給了i
i此時等於9,再第6句程式的時候,就get到了9的值。
這就是在類的非靜態成員函式中呼叫非靜態成員
由例2 可知
this指標作用:
this指標最大的作用就是儲存了當前物件的位址,並用指標的形式指向了
當前的物件
**:
指標的學習
一 p 和 p用法 1 y p 等於y p p 例 int p,a 3,y 0 p a printf d,x p,p 結果 3,bf884ff8 y p printf d,x y,p 結果 3,bf884ffc printf x p 結果 bf884ffc 2 y p 把 p的內容 1給y。例 in...
C 指標的學習
include head.c void main end switch end for end main void arrayref end for printf 1 output n for n 0 n 10 n end for printf n end arrayref void fingera...
指標陣列的學習
本章主要講解的內容是如何通過指針對二維陣列進行遍歷 首先,講解一下二維陣列,int a 3 3 二維陣列的數學概念就是乙個3 3階的矩陣形式,而實際中,二維陣列在記憶體中是一維線性排列的 我們先定義乙個指向a的指標p,int p 4 a。其中的優先順序高於 如果我們不帶上括號,就會變成 int p ...