C 公有繼承

2021-09-18 06:10:09 字數 1157 閱讀 1147

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 ...