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

2021-06-20 15:13:18 字數 1144 閱讀 4581

考察下面的程式:

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's default constructor called!

point2's defaule constructor called

point1's default constructor called!

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

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

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

基類的建構函式

子物件類的建構函式

派生類的建構函式

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

先給結論 1 派生類中的基類子物件和子物件必須初始化,初始化在派生類的建構函式的初始化列表中,如果初始化列表中沒有進行初始化,則呼叫預設的建構函式進行初始化。2 派生類建構函式的呼叫順序 基類的建構函式 子物件類的建構函式 派生類的建構函式 例子class point1 point1 point1 ...

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

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

Python中的類 物件 繼承

python中,類的命名使用帕斯卡命名方式,即首字母大寫。python中定義類的方式如下 class 類名 父類名 父類名 pass 省略父類名表示該類直接繼承自object,類的例項化如下 class person def init self pass person person init 是類的...