物件導向程式設計(C )學習筆記三

2021-09-24 12:09:43 字數 1568 閱讀 8101

對於class型別,必須用new/delete來建立銷毀物件,malloc/free是無法勝任的。

new:動態建立乙個物件(1)申請一塊記憶體(2)內部呼叫了建構函式

delete:釋放這個物件(1)呼叫了析構函式(2)釋放記憶體

動態建立乙個物件:

circle* c = new circle();	//預設建構函式

circle* c = new circle; //不加括號也可以

circle* c = new circle(1,1,4); //傳構造引數

釋放物件:delete c;

動態建立多個物件:

circle* c = new circle[4];

delete c;

注意:含有預設建構函式的類,才可能使用new一次性構造多個物件。

在c++裡,有繼承的語法:

class tutorial;

class videotutorial : public turtorial;

語法:class b: public a; 表示類b繼承於類a,把a稱為父類(基類),把b稱為子類(派生類)。當類b繼承於a時,則自動的將父類中的所有public成員繼承。

例如,

class turtorial;
則在videoturtorial類中也有了這些成員,而不必顯示地寫出。

子類只需要把自己的獨有的那部分寫出來,例如,

class videotutorial : public turtorial;
小結:

1.用classb:public a{} 表示b繼承於a

2.當b繼承於a後,父類的所有protected/public成員都能被繼承

3.什麼叫繼承?就是這些父類的成員如同直接寫在子類裡一般

4.**上可以簡化

函式的重寫:子類可以重寫父類繼承而來的函式(overwriting),例如,

class parent;

class child:public parent;

如果重寫的時候,還是要嵌入呼叫一下父類的函式,怎麼辦?

void child ::test()
父類指標指向子類物件,例如,

從語法本質上講,子類的前半部分就是父類,因而可以將子類物件的指標直接轉化為父類。

class parent;
virtual本身表明該函式即將被子類重寫。

考慮以下情況,

parent* obj = new child();

obj->test();

此時,如果test()在父類中被宣告為virtual,則呼叫的是子類test(). virtual的作用:根據物件的實際型別,呼叫相應型別的函式。

注意:1.只需要在父類中講函式宣告為virtual,子類自動地就是virtual了

2.即將被重寫的函式新增virtual,是一條該遵守的編碼習慣

C 學習筆記 物件導向程式設計

1.什麼是類 物件和成員?類 乙個類包含很多的物件。比如人類就是乙個類,張 三 李四等是人類的物件,這些物件擁有人類共同的功能和資料,如身高 體重 年齡等,而具體化這些資料我們可看做是人類的成員變數。所以類是由若干個變數和相關函式組成,而物件則擁有這些變數和函式。2.如何宣告乙個類?類只有先宣告才能...

c 物件導向程式設計(三)

一 委託和事件 c 中的委託類似於c或c 中的函式指標。使用委託使程式設計師可以將方法引用封裝在委託物件內。然後可以將該委託物件傳遞給可呼叫所引用方法的 而不必在編譯時知道將呼叫哪個方法。與c或c 中的函式指標不同,委託是物件導向 型別安全的,並且是安全的。宣告方法 屬性 委託修飾符 delegat...

《物件導向程式設計 C 》學習筆記1

組織問題的方法 設計和具體語言實現 物件,而不是控制或資料流,是我們設計和實現的焦點 關注東西,而不是過程.物件互相之間傳送和接收訊息 傳送者傳遞訊息,做不做 怎麼做由接收者決定,這是 蛋圖 的核心 訊息可能導致接收者改變狀態或返回結果 物件是東西,對訊息做出反應 類是東西的種類 一切都是物件 程式...