c c 整理 私有繼承

2021-08-04 02:04:16 字數 539 閱讀 9309

#include using namespace std;

class person

//engine建構函式

void start()

{ cout<<"engine start, "<

類car_pri和car_comp有很多相似點:

(1)它們都只有乙個engine被確切的包含於car中。

(2)它們都不能進行指標轉換,如將car_pri*轉換為engine*。

(3)它們都有乙個start方法,並且都包含在engine物件中呼叫start方法。

也有下面一些區別:

(1)如果想讓每個car都包含若干engine,那麼只能用單一組合的形式。

(2)私有繼承形式可能引入不必要的多重繼承。

(3)私有繼承形式允許car的成員將car*轉換為engine*。

(4)私有繼承形式允許訪問基類的保護成員。

(5)私有繼承形式允許car重寫engine的虛函式。

組合和私有繼承之間如何選擇呢?這裡有個原則:盡可能使用組合,萬不得已才使用私有繼承。

C C 繼承 多型和虛函式整理

關於c 中虛函式 1.怎麼初始化基類的建構函式 在派生類中,通過引數初始化表可以對基類的建構函式傳遞引數,進行初始化 2.多重繼承的二意性問題 可以將第二層派生類宣告為虛基類 盡量不要使用多重繼承 class b virtual public a class c virtual public a c...

C C private私有繼承

private繼承方式 1 基類成員對其物件的可見性 公有成員可見,其他成員不可見。2 基類成員對派生類的可見性 公有成員和保護成員是可見的,而私有成員是不可見的。3 基類成員對派生類物件的可見性 所有成員都是不可見的。所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。a con...

討論私有繼承

我們來看下面例子 class base 再來看私有繼承的派生類的訪問情況 class priv derv private base ok 相當於基類在此派生類的成員如下 class priv derv private base 因此我們可以按照訪問此類中的私有成員的方法來訪問基類的所有成員。clas...