c 繼承子類建構函式問題

2022-11-24 18:36:04 字數 1446 閱讀 9269

c++中子類在繼承基類的時候需要在建構函式中初始化變數。如果基類沒有建構函式或者只有不帶引數的建構函式,那麼子類中的建構函式就不需要呼叫基類的建構函式了。

個人總結了兩點子類中建構函式必須呼叫父類的建構函式的情況(最常見的情況,不完全):

1.當子類(派生類)中申明瞭父類(基類)型別的物件的時候,必須在子類的建構函式中進行物件的初始化。

2.當子類繼承的父類中有帶引數的建構函式的時候,必須在子類的建構函式中呼叫基類的建構函式。

下面以**為例子:

例一(說明2):

1 #include 2 #include 

3using

namespace

std;45

class

person611

void

call()

1215

};16

17class student : public

person

1822

void

call()

2326

};27

28int

main()

29

例二(說明1)

1 #include 2 #include 

3using

namespace

std;45

class

person611

void

call()

1215

};16

17class

animal

1823

};24

25class student : public

person

26 //

注意:這裡用物件的名字來對物件object進行初始化。

31void

call()

3235

};36

37int

main()

38

例三:

1 #include 2 #include 

3using

namespace

std;45

class

student

613 ~student()

14};

1516

class graduate : public

student

1722 ~graduate()

23void

show()

2427

};28

29int

main()

3035

例三執行結果:

如有不對,歡迎批評指正!