修練8年C 物件導向程式設計之體會

2021-08-30 00:13:34 字數 850 閱讀 1024

1.3 虛函式與多型

除了繼承外,c++的另乙個優良特性是支援多型,即允許將派生類的物件當作基類的物件使用。如果a 是基類,b 和c 是a 的派生類,多態函式test 的引數是a 的 指標。那麼test 函式可以引用a、b、c 的物件。示例程式如下:

class a

;void test(a *a)

class b : public a

;class c : public a

;// example

main()

;以上程式看不出「多型」有什麼價值,加上虛函式和抽象基類後,「多型」的威力就顯示出來了。

c++用關鍵字virtual 來宣告乙個函式為虛函式,派生類的虛函式將(override)基類對應的虛函式的功能。示例程式如下:

class a

};void test(a *a)

class b : public a

};class c : public a

};// example

main()

;如果基類a 定義如下:

class a

;那麼函式func1 叫作純虛函式,含有純虛函式的類叫作抽象基類。抽象基類只管定義純虛函式的形式,具體的功能由派生類實現。

結合「抽象基類」和「多型」有如下突出優點:

(1)應用程式不必為每乙個派生類編寫功能呼叫,只需要對抽象基類進行處理即可。這一

招叫「以不變應萬變」,可以大大提高程式的可復用性(這是介面設計的復用,而不是**實現的復用)。

(2)派生類的功能可以被基類指標引用,這叫向後相容,可以提高程式的可擴充性和可維護性。以前寫的程式可以被將來寫的程式呼叫不足為奇,但是將來寫的程式可以被以前寫的程式呼叫那可了不起。

修練8年C 物件導向程式設計之體會

在本頁瀏覽全文 1.3 虛函式與多型 除了繼承外,c 的另乙個優良特性是支援多型,即允許將派生類的物件當作基類的物件使用。如果a 是基類,b 和c 是a 的派生類,多態函式test 的引數是a 的 指標。那麼test 函式可以引用a b c 的物件。示例程式如下 class a void test ...

修練8年C 物件導向程式設計之體會

2 良好的程式設計風格 內功深厚的武林高手出招往往平淡無奇。同理,程式設計高手也不會用奇門怪招寫程式。良好的程式設計風格是產生高質量程式的前提。2.1 命名約定 有不少人程式設計時用拼音給函式或變數命名,這樣做並不能說明你很愛國,卻會讓用此程式的人迷糊 很多南方人不懂拼音,我就不懂 程式中的英文一般...

修練8年C 物件導向程式設計之體會2

1.2 繼承與組合 如果a 是基類,b 是a 的派生類,那麼b 將繼承a 的資料和函式。示例程式如下 class a class b public a example main 這個簡單的示例程式說明了乙個事實 c 的 繼承 特性可以提高程式的可復用性。正因為 繼承 太有用 太容易用,才要防止亂用 ...