c 繼承類中的子物件和基類物件的初始化

2021-06-25 17:14:29 字數 1257 閱讀 1267

先給結論:

(1)派生類中的基類子物件和子物件必須初始化,初始化在派生類的建構函式的初始化列表中,如果初始化列表中沒有進行初始化,則呼叫預設的建構函式進行初始化。

(2)派生類建構函式的呼叫順序:

基類的建構函式

子物件類的建構函式

派生類的建構函式

例子

class point1  

;point1::point1()

point1::point1(int i)

point1::~point1()

class point2 : public point1

;point2::point2()

point2::point2(int i,int j,int k)

point2::~point2()

//主函式

void main()

執行結果

point1's default constructor called!// point1 p;呼叫了基類預設建構函式

point1's default constructor called!//

point2's defaule constructor called

point1's default constructor called!// point1 p;呼叫了基類預設建構函式

point1's default constructor called!

point2's constructor called

如果函式

point2::point2(int i,int j,int k)

改為:

point2::point2(int i,int j,int k):p(j)

執行結果為:

point1's default constructor called!

point1's default constructor called!

point2's defaule constructor called

point1's default constructor called!

point1's constructor called!

point2's constructor called

繼承類中的子物件和基類物件的初始

考察下面的程式 class point1 point1 point1 point1 point1 int i point1 point1 class point2 public point1 point2 point2 point2 point2 int i,int j,int k point2 p...

關於c 基類,繼承類,子物件的構造和析構順序

構造和初始化的區別 兩者從意義上而言 1 初始化 乙個變數或者乙個物件在產生的時候就賦予乙個值,屬於伴隨性質 2 賦值 在乙個變數或者乙個物件在產生之後的任意時刻賦予乙個值,屬於任意性質 建構函式 1 函式的名字與類的名字相同 2 在建立乙個物件時,建構函式就自動執行,但是在宣告乙個類的指標物件時,...

C 類和物件的繼承

在前面的章節,我們學會了如何編寫乙個完整的類。然而,物件導向的優勢還沒有被完全體現出來。特別是在編寫一些相似的類時,可能會造成很多的浪費。本章就將以乙個文字遊戲為例,向大家介紹類的繼承問題。在乙個角色扮演類遊戲 rpg 中,可能有各種不同職業的玩家,比如劍士 弓箭手和法師。雖然他們的職業不同,卻有著...