1. 程式人生 > >類繼承-繼承類的建構函式

類繼承-繼承類的建構函式

派生類的建構函式:

派生類不能直接訪問基類的私有成員,必須通過基類提供的公有方法。

派生類不能繼承基類的建構函式,因為建構函式和成員函式存在區別:建構函式用於建立新的物件,而其他成員函式是被現有的物件呼叫。

派生類建構函式必須使用基類的建構函式。建立派生類物件時,先建立基類物件,因此基類物件應該在進入派生類建構函式之前被建立。c++使用初始化列表完成這項工作。

Derived::Derived(int x,int y)Based(x)
{
	m=y;
}

也可以這樣:

Derived::Derived(int x,int y)Based(x),m(y)
{ ... }

必須先 建立基類物件,如果沒有呼叫基類的建構函式,程式將使用預設的基類建構函式。下面的程式碼是等效的:

Derived::Derived(int x,int y)
{
	m=y;
}
//呼叫預設的基類建構函式
Derived::Derived(int x,int y)Based()
{
	m=y;
}

派生類建構函式總結:

  • 先建立基類物件
  • 派生類建構函式應通過成員初始化列表將基類資訊傳遞給基類建構函式,初始化列表中應該指明呼叫的基類建構函式,否則將使用預設的建構函式
  • 派生類建構函式應該初始化派生類新增的成員變數