類物件和類指標區別

2021-10-12 07:16:52 字數 1467 閱讀 4271

**類物件和類指標

本文**。。。

student a;

s.setname(「a」);

//studeng *b = new student();

student *b;

b = new student();

b->setname(「b」);

分析:定義類物件基本格式是:student a;在定義之後就已經為a這個物件分配了記憶體,且為記憶體棧;

定義類指標基本格式是:student b = new student();在定義b的時候並沒有分配記憶體,只有執行new後才會分配記憶體,且為記憶體堆。

問題:(1)類物件和類指標區別

a: 定義

——類物件:利用類的建構函式(建構函式:對類進行初始化工作)在記憶體中分配一塊區域(包括一些成員變數賦值);

——類指標:是乙個記憶體位址值,指向記憶體中存放的類物件(包括一些成員變數賦值;類指標可以指向多個不同的物件,這就是多型);

b: 使用

——引用成員:物件使用「.」操作符,指標用「->」操作符;

——生命週期:若是成員變數,則由類的析構函式來釋放空間;若是函式中臨時變數,則作用域是函式體內;而指標則需要利用delete在相應的地方釋放分配的記憶體塊。

注意:new與delete成對存在!!!

c: 儲存位置

——類物件:用的是記憶體棧,是個區域性的臨時變數;

——類指標:用的是記憶體堆,是個永久變數,除非你釋放它。

d: 多型

——指標可以實現多型,直接用物件不行。

f: 訪問方式

——指標變數是間接訪問,但可實現多型(通過父類指標可呼叫子類物件),並且沒有呼叫建構函式;

——直接宣告可直接訪問,但不能實現多型,宣告即呼叫了建構函式(已分配了記憶體)。

(2)類物件和類指標聯絡

——在類的宣告尚未完成的情況下,可以宣告指向該類的指標,但是不可宣告該類的物件;

——父類的指標可以指向子類的物件。

(3)指標與多型

——有前面可知:類指標是乙個指向記憶體中存放類物件的記憶體位址值,那麼這個指標可以指向多個不同的物件,這就是多型;

拓展:指標與虛函式

——要發揮虛函式的強大作用,必須使用指標來訪問物件。

——當類是有虛函式的基類,func是它的乙個虛函式,則呼叫func時:

類物件:呼叫的是它自己的func;

類指標:呼叫的是分配給它空間時那種類的func。

(4)什麼情況使用類物件與類指標?

——其實作用基本一樣 都是為了呼叫類的成員變數和成員函式用的;

——當你希望明確使用這個類的時候,最好使用物件;

如果你希望使用c++中的動態繫結,則最好使用指標或者引用,指標和引用用起來更靈活,容易實現多型等。

(5)指標好處

——第一,實現多型。

——第二,在函式呼叫,傳指標引數。不管你的物件或結構引數多麼龐大,你用指標,傳過去的就是4個位元組。如果用物件,引數 傳遞占用的資源就太大了

類物件和類指標的區別

對於類ctest 宣告 類物件ctest c1 利用類的建構函式在記憶體中分配一塊記憶體,呼叫了建構函式 類指標ctest pc1 是乙個記憶體位址值,指向記憶體中存放的類物件,沒有呼叫建構函式 引用成員 物件用 指標用 物件生命期 若是成員變數,則是類的析構函式來釋放空間 若是函式中的臨時變數,則...

類指標和類物件的區別

如下程式 include include using namespace std class student void set string str void print 態成員函式 print int student number 0 靜態資料成員初始化 int main int argc,cha...

類物件和類指標的區別

如下程式 include include using namespace std class student voidset string str void print 態成員函式 print int student number 0 靜態資料成員初始化 int main int argc,char...