繼承中的構造析構函式呼叫順序

2022-08-24 16:06:12 字數 922 閱讀 5277

子類建構函式必須對繼承的成員進行初始化:

1. 通過初始化列表或則賦值的方式進行初始化(子類無法訪問父類私有成員)

2. 呼叫父類建構函式進行初始化

2.1  隱式呼叫:子類在被建立時自動呼叫父類建構函式(只能呼叫父類的無參建構函式和使用預設引數的建構函式)

2.2  顯示呼叫:在含參建構函式的初始化列表呼叫父類建構函式(適用所有的父類建構函式)

#include #include 

using

namespace

std;

class pparent //

父父類 ~pparent()

};class parent : public pparent //

父類 parent(

string

s) : pparent(s)

~parent()

};class sib_child //

同級類 sib_child(

string

s)

~sib_child()

};class child : public parent //

自己 child(

string s) : parent(s), sib_child(s) //

先呼叫父類建構函式,再呼叫同類建構函式

~child()

};int

main()

構造函式呼叫順序:

1. 執行父類建構函式

2. 執行同級建構函式

3. 執行自己建構函式

析構函式呼叫順序:

1. 執行自己析構函式

2. 執行同級析構函式

3. 執行父類析構函式

繼承和建構函式析構函式呼叫順序

繼承 的重用性 using namespace std 人類 class human protected char name int age 男人 class man public human private 兄弟 char brother void work human h void main 向...

C 的繼承中構造和析構函式的呼叫順序

例項 include using namespace std class parent parent public int a private int b protected int d class child3 public parent child3 public private int c p...

C 類繼承中的建構函式和析構函式 呼叫順序

在c 的類繼承中,建構函式不能被繼承 c11中可以被繼承,但僅僅是寫起來方便,不是真正的繼承 建立物件時,首先呼叫基類的建構函式,然後在呼叫下乙個派生類的建構函式,依次類推 析構物件時,其順序正好與構造相反 if 子類沒有自定義建構函式 if 基類沒有自定義建構函式 用子類定義物件時,先自動呼叫基類...