存放物件初始位址的指標變數就是指向物件的指標變數,存放物件成員位址的指標變數就是指向物件成員的指標變數。
1.指向物件資料成員的指標
定義指向物件資料成員的方法和定義指向普通變數的方法相同:
資料型別 *指標變數名 如:
doouble *p;
p=&student.score;//將物件student的資料成員score的位址賦給p.
2.指向物件成員函式的指標
定義指向成員函式的指標和定義指向普通函式的指標的方法是不同的。定義指向普通函式的指標的方法是這樣的:
資料型別名(* 指標變數名)(引數列表);如:
void (*p)(int,int);
p=func;
而指向物件函式的指標變數的型別必須與賦值號右側函式的型別相匹配,要求在一下3個方面要匹配:
(1)函式引數的型別和引數個數;(2)函式返回值的型別;(3)所屬的類。
資料型別名(類名::*指標變數名)(參數列列);
如: void (student::*p)();
p=&student.print;
3. this指標
在每乙個成員函式中,都包含乙個特殊的指標,這個指標的名字是固定的,稱為this指標。它是指向本類物件的指標,它的值是當前被呼叫的成員函式所在的物件的起始位址。this指標式隱式使用的,它是作為引數被傳遞給成員函式。
void student::print(){
cout2.生命期: 若是成員變數,則是類的析構函式來釋放空間;若是函式中的臨時變數,則作用域是該函式體內.而指標,則需利用delete 在相應的地方釋放分配的記憶體塊.
注意:用new ,一定要delete..
類的物件:用的是記憶體棧,是個區域性的臨時變數.
類的指標:用的是記憶體堆,是個永久變數,除非你釋放它.
當類是有虛函式的基類,func是它的乙個虛函式,則呼叫func時:
類的物件:呼叫的是它自己的func;
類的指標:呼叫的是分配給它空間時那種類的func;
對於乙個類的物件和這個類的指標(用new運算子分配記憶體)在應用時有何區別
1.類和物件是兩回事,物件是類的例項;
2.物件是在棧中分配的,使用new生成的物件是在堆中分配的;
3.要發揮虛函式的強大作用,必須使用指標來訪問物件.
指標可以實現多型,直接用物件不行
執行定義物件,在棧空間
new處的在堆
注意名字的型別.
乙個是student
乙個是student*
student是直接訪問乙個物件
student*是間接訪問乙個物件,因為通過了乙個指標作媒介.
類 型決定了你能做什麼.
其實作用基本一樣 都是為了呼叫類的成員變數 和成員函式用的 當你希望明確使用這個類的時候,最好使用物件,如果你希望使用c++中的動態繫結,則最好使用指標或者引用指標和引用用起來更靈活,容易實現多型等
類的指標:他是乙個記憶體位址值,他指向記憶體中存放的類物件(包括一些成員變數所賦的值). 物件,他是利用類的建構函式在記憶體中分配一塊記憶體(包括一些成員變數所賦的值).
在應用時:
1.引用成員: 物件用" . "操作符; 指標用" -> "操作符.
2.生命期: 若是成員變數,則是類的析構函式來釋放空間;若是函式中的臨時變數,則作用域是該函式體內.而指標,則需利用delete 在相應的地方釋放分配的記憶體塊.
注意:用new 一定要delete..
當類是有虛函式的基類,f是它的乙個虛函式,則呼叫f時:
類的物件:呼叫的是它自己的f;
類的指標:呼叫的是分配給它空間時那種類的f;
1.在類的宣告尚未完成的情況下,可以宣告指向該類的指標,但是不可宣告該類的物件...
2.父類的指標可以指向子類的物件..
定義物件例項時,分配了記憶體。指標變數則未分配類物件所需記憶體,指標變數是間接訪問,但可實現多型(通過父類指標可呼叫子類物件),並且沒有呼叫建構函式。 直接宣告可直接訪問,但不能實現多型,宣告即呼叫了建構函式(已分配了記憶體)。 至於那個效率高要看程式呼叫過程而定。c++的精髓之一就是多型性,只有指標或者引用可以達到多型。物件不行
用指標:
第一實現多型。
第二,在函式呼叫,傳指標引數。不管你的物件或結構引數多麼龐大,你用指標,傳過去的就是4個位元組。如果用物件,引數傳遞占用的資源就太大了
關於void指標用法的一些疑慮
三天,學長給的三個小函式現在只寫出了乙個。實現三個函式 int memoryset void dst,const void src,size t n 將dst 所指向的記憶體中的每個位元組的內容全部設定為src 指定的值,先以八個位元組為單位,不足再以四位元組位單位,不足再以兩位元組為單位,餘下的以...
關於C指標的一些理解
有時總被指標的用法及型別所困擾,那我簡單理解一下指標。指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。如下例子 1 int ptr 2 cha...
JavaScript中物件的一些基本用法
建立乙個物件 var fido 用 點 記法訪問物件屬性 if fido.weight 25 else 使用乙個串結合訪問屬性 var breed fido breed 使用物件以及用引號和中括號包圍的屬性名訪問這個屬性的值 if breed mixed 改變屬性的值 fido.weight 27 ...