繼承建構函式

2022-08-11 11:45:11 字數 894 閱讀 3434

在c++的繼承關係中,只有虛函式可以被繼承,而建構函式不可以是虛函式,所以建構函式不能被繼承,但是可以通過某種特殊手段,達到繼承的效果。

先看看c++中using關鍵字的乙個應用 

1 #include 2

using

namespace

std;34

struct

base 6};

78struct

derived : base

11};

1213

intmain()

列印結果如下:

第9行和第10行為derived類定義了兩個版本的f函式,不管你知道或是不知道,奇怪或是不奇怪,結果就是這樣,這就是using關鍵字的乙個小應用。

而c++11利用using關鍵字這一特點,是建構函式可以被「繼承」。

1

struct

a 3 a(double d, int

i){}

4 a(float f, int i, const

char*c){}5};

67struct

b:a ;

10};

1112

intmain()

使用繼承建構函式特性有一些需要注意的地方:

1. 如果基類的建構函式被宣告為私有函式,或者派生類是從基類虛繼承的,那麼就不能使用繼承建構函式。

2. 如果乙個類使用了繼承建構函式,那麼編譯器將不會為其生成預設的建構函式。

繼承建構函式的特性據說要到g++ 4.8才會被支援,但是我的版本是4.7,所以以上**還無法編譯。

建構函式 繼承

首先給出如下兩個建構函式 function animal function cat name,color 一 建構函式的繫結 function cat name,color var cat11 new cat 11 綠色 console.log cat11.species 二 prototype 模...

建構函式 繼承

首先給出如下兩個建構函式 function animal function cat name,color 一 建構函式的繫結 function cat name,color var cat11 new cat 11 綠色 console.log cat11.species 二 prototype 模...

建構函式的繼承

在父類中定義了2個建構函式,在子類中,也定義了2個建構函式。當執行子類時,可以發現先呼叫父類的建構函式,在呼叫子類的建構函式。實驗四 建構函式的繼承 實驗內容 在父類中,定義了2個建構函式,在子類中,也定義了2個建構函式。編寫 程式顯示父類 子類建構函式的呼叫過程,在子類中實現建構函式的繼承。pac...