c 之類物件與類指標的區別

2021-09-28 17:12:09 字數 1050 閱讀 3491

student a;  

a.setname

("a");

student *b;

b =new

student()

;b->

setname

("b"

);

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

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

區別:

1、定義

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

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

2、使用

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

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

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

3、儲存位置

類物件:棧,是區域性的臨時變數。

類指標:堆,永久變數,除非你釋放它

4、多型

類物件無法實現多型,類指標可以實現多型

原因見

classa}

;classb:

public a};

void

main()

5、訪問方式

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

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

類與物件之類的封裝

1.所謂類的封裝是指將其屬性私有化 用private關鍵字 這樣外界不能直接訪問成員變數 2,如何訪問?提供獲取屬性的get 方法和設定屬性值的set 方法 例 package cn.sd.jsj public class persontest class person 結果 i am 張鵬,i a...

C 之類與物件

都說c 是乙個完全物件導向的語言,我 那天很自豪的也和我說了,好像這個語言很令人振奮。以前學習vb的時候總是感覺很吃力,因為自己對 基本根本沒有親和力,在以前如果給自己一大批 讓自己按著敲,那麼這個對於當時的我來說肯定是世界上最幸福的事情了。很喜歡安靜的敲 的感覺 現在越來越能體會到,是被人賦予靈魂...

C 之類與物件

類的定義語法 私有成員 公有成員 保護成員 物件 由類定義的例項,通過物件可以訪問類的公有成員,私有成員只能通過類內成員 友元函式 友元類訪問 建構函式 預設建構函式 一般建構函式 拷貝建構函式 採用引數常引用 類的組合 類的組合是 is a kind of 的關係,要特別注意類的組合函式的建構函式...