這是我今天看書剛剛看到的,覺著以前對這一塊內容了解不多,所以整理一下分享給大家。首先要介紹一下子對象的概念。類的數據成員不僅可以是int、char這樣的基本類型,也可以是類對象,如可以包含這樣的數據成員: [cpp] Student s1; //Student是已經聲明的類 這時s1就是類對象中的內嵌對象,即為子對象,這與結構體類型的成員可以是結構體變量類似。 回顧一下簡單派生類構造函數的寫法: [cpp] class student { public: student(int n,string nam,char s){ num=n; name=nam; sex=s; } ~student(){} protected: int num; string name; char sex; }; class student1:public student{ public: student1(int n,string nam,char s,int a,string ad):student(n,nam,s){ age=a; addr=ad; } ~student1(){} private: int age; string addr; }; 派生類一般構造函數格式為 派生類名 (總參數列表):基類名(參數列表){派生類新增數據成員初始化語句;} 子對象的派生類構造函數如何寫呢? 我們都知道對象應該在建立之時就初始化,但顯然子對象的初始化不能在聲明派生類時就對它進行,因為類是抽象類型,只是一個模型,不能有具體的數據。所以子對象的初始化是在建立派生類時通過調用派生類構造函數來實現的。在剛才的例子中增加一個班長項,班長的類型很顯然就是student,所以它是一個子對象,現在構造函數如下: [cpp] student1(int n,string nam,char s,int n1,string nam1,char s1,int a,string ad): student(n,nam,s),monitor(n1,nam1,s1){ age=a; addr=ad; } 在上面構造函數中一共有八個參數,前三個是基類構造函數的參數,第4、5、6個參數是子對象構造函數參數,最後兩個是用作派生類數據成員初始化的。 歸納一下,構造函數格式如下 派生類構造函數名(總參數列表):基類構造函數名(參數列表),子對象名(參數列表) {派生類新增數據成員初始化語句}