定義基類和派生類

2021-09-06 19:04:30 字數 791 閱讀 8580

定義基類

對於基類,我們需要記住的是作為繼承關係中根節點的類通常都會定義乙個虛析構函式。

基類通常都會定義乙個虛析構函式,即使該函式不執行任何實際操作也是如此。

成員函式和繼承

派生類可以繼承其基類的成員,也可以對基類中的虛函式進行重新定義。換句話說,派生類需要對這些操作提供自己的新定義以覆蓋(override)從基類繼承而來的舊定義。

在c++語言中,基類必須將它的兩種成員函式區分開來:一種是基類希望其派生類進行覆蓋的函式;另一種是基類希望派生類直接繼承而不要改變的函式。對於前者,基類通過將其定義為虛函式(virtual)。當我們使用指標或引用呼叫虛函式時,該呼叫將被動態繫結。根據引用或指標所繫結的物件型別不同,該呼叫可能執行基類的版本,也可能執行某個派生類的版本。

基類通過在其成員函式的宣告語句之前加上關鍵字virtual使得該函式執行動態繫結。任何建構函式之外的非靜態函式都可以是虛函式。關鍵字virtual只能出現在類內部的宣告語句之前而不能用於類外部的函式定義。如果基類把乙個函式宣告成虛函式,則該函式在派生類中隱式地也是虛函式。

成員函式如果沒有被宣告為虛函式,則其解析過程發生在編譯時而非執行時。

訪問控制與繼承

派生類可以繼承定義在基類中的成員,但是派生類的成員函式不一定有權訪問從基類繼承而來的成員。和其他基類的**一樣,派生類能訪問公用成員,而不能訪問私有成員。不過在某些時候基類中還有這樣一種成員,基類希望它的派生類有權訪問該成員,同時禁止其他使用者訪問。我們用受保護的(protected)訪問運算子說明這樣的成員。

定義派生類

定義基類和派生類

作為繼承關係中根節點的類通常都會定義乙個虛析構函式。基類通常都應該定義乙個虛析構函式,即使該函式不執行任何實際操作也是如此。成員函式與繼承 在c 語言中,基類必須將它的兩種成員函式區分開來 一種是基類希望其派生類進行覆蓋的函式 另一種是基類希望派生類直接繼承而不要改變的函式。對於前者,基類通常將其定...

定義基類和派生類

物件導向程式設計的核心思想是資料抽象 繼承和動態繫結。通過繼承聯絡在一起的類構成一種層次關係,通常在層次關係的根部有乙個基類,其他類則直接或間接的從基類繼承而來,這些繼承得到的類稱為派生類。基類負責定義在層次關係中所有類共同擁有的成員,而每個派生類定義各自特有的成員。派生類必須通過使用類派生列表明確...

15 2 定義基類和派生類

目錄15.2.2 定義派生類 15.2.3 型別轉換與繼承 定義quote類 class quote string isbn const 返回給定數量的書籍的銷售總額 派生類負責編寫並使用不同的折扣演算法 virtual double net price int n const virtual qu...