c 類的指標

2021-05-23 05:31:17 字數 2283 閱讀 2144

1,類指標呼叫成員函式,根據的不是指標所指向物件而是根據指標所屬的型別,呼叫相關的函式。

此程式指標p照樣能呼叫類a的函式print.

2,指向基類物件的指標不僅可以包含基類物件的位址,還可以包含派生類物件的位址。

3,類的物件和類的指標的區別**:http://blog.csdn.net/wang7890/archive/2009/02/18/3907489.aspx)

如下程式: 

#include

#include

using namespace std; 

class student 

void set(string str) 

void print()  // 態成員函式 print() 

}; int student::number = 0;  // 靜態資料成員初始化 

int main(int argc, char** argv) 

對於類student ,定義了乙個物件 和乙個指標。

類的指標:他是乙個記憶體位址值,他指向記憶體中存放的類物件(包括一些成員變數所賦的值).   

物件,他是利用類的建構函式在記憶體中分配一塊記憶體(包括一些成員變數所賦的值).   

在應用時:   

1.引用成員:   物件用"   .   "操作符;   指標用"   ->   "操作符.   

2.生命期:     若是成員變數,則是類的析構函式來釋放空間;若是函式中的臨時變數,則作用域是該函式體內.而指標,則需利用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個位元組。如果用物件,引數傳遞占用的資源就太大了

C 類中的this指標

1.this指標的用處 乙個物件的this指標並不是物件本身的一部分,不會影響sizeof 物件 的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加...

C 的類和This指標

類 一.類的定義 類的定義 class classname 一定要注意後面的分號類的定義通常有兩種方式 a.類的宣告和定義全部放在類體中。宣告和定義放在一起 class ctest ctest b.類的宣告放在.h檔案中,類的定義放在放在.cpp檔案中。test.h類的宣告 class ctest ...

C 指向類的指標

乙個指向 c 類的指標與指向結構的指標類似,訪問指向類的指標的成員,需要使用成員訪問運算子 就像訪問指向結構的指標一樣。與所有的指標一樣,您必須在使用指標之前,對指標進行初始化。下面的例項有助於更好地理解指向類的指標的概念 include using namespace std class boxd...