class base;
class derived : public base
派生類宣告時,加上「 : public 基類名」
公有繼承,派生類繼承了成員和介面。
也就是說,派生類物件中,有基類的成員。
派生類不能直接訪問基類的私有,但是可以訪問基類的公有介面,所以通過基類的公有介面可以間接的訪問基類成員。
派生類在宣告時,要宣告自己的建構函式。
派生類呼叫自己的建構函式之前,要自動呼叫基類的建構函式初始化基類成員,可以通過成員初始化列表顯式的指明呼叫哪乙個基類構造,預設情況下呼叫預設的無參構造。
派生類在宣告時,要宣告自己的析構函式。派生類呼叫析構函式之後,自動的呼叫基類的析構函式。
繼承中,建構函式的呼叫順序總是和析構函式呼叫順序相反
賦值運算子預設呼叫每個成員的賦值運算子函式(如果是基本型別,直接值傳遞)。對於派生類物件來說,基類成員的部分呼叫基類的賦值運算子,派生類成員的部分呼叫派生類賦值運算子。
再提一句,如果基類中有通過new初始化的成員,則應該重定義基類的複製建構函式和賦值運算子,如果派生類新擴充套件了需要通過new初始化的成員,那麼,派生類定義自己的複製建構函式和賦值運算子函式。對於析構函式,應該將基類的析構函式宣告為虛函式
先說複製建構函式,應該通過成員初始化列表顯式說明要呼叫基類地複製建構函式。
derived::derived(derived &obj) : base(obj)
對於賦值運算子,重定義時,要先呼叫基類的賦值運算子給基類部分賦值。
derived &derived::operator=(const derived &obj)
對於析構函式,基類應該將析構函式宣告為虛函式,如果通過引用或指標操作乙個派生類物件,通過基類引用或指標釋放記憶體,如果析構函式不為虛,只會呼叫派生類的析構函式;析構函式為虛,則通過基類指標可以呼叫派生類的析構函式,派生類析構函式呼叫完成後,自動呼叫基類析構函式
這個好理解,基類友元函式不屬於基類,自然不會被繼承。
C 類繼承 公有繼承
使用公有繼承,可以達到如下的特性 tabtenn1.h ifndef tabtenn1 h define tabtenn1 h include using std string class tabletennisplayer 基類宣告 void resettable bool v class rat...
C 多型公有繼承
標籤 空格分隔 c 版本 2本文章僅發布於 作業部落 原 csdn 如果我們希望同乙個方法在基類和派生類中的行為是不同的的時候,我們可以採取一種比較複雜的行為 多型。具有多型性質的物件的行為取決於呼叫物件,即同乙個方法的行為隨上下文而異。為了實現多型c 提供了兩種重要的機制1 無論我們是否使用多型,...
C 公有繼承 私有繼承和保護繼承
在c 中有三種繼承方式 公有繼承 public 私有繼承 private 和保護繼承 protected 1.公有繼承 public 公有繼承 基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private ...