C++學習筆記_3:多繼承時的類聲明及構造和解構函式

來源:互聯網
上載者:User
//基類與衍生類別的對應關係//單繼承:衍生類別只從一個基類派生。//多繼承:衍生類別從多個基類派生。//多重派生:由一個基類派生出多個不同的衍生類別。//多層派生:衍生類別又作為基類,繼續派生新的類。//class 衍生類別名:繼承方式1  基類名1,繼承方式2  基類名2,...//{//        成員聲明;//}//注意:每一個"繼承方式",只用於限制對緊隨其後之基類的繼承。//繼承時的建構函式://基類的建構函式不被繼承,需要在衍生類別中自行聲明。//聲明建構函式時,只需要對本類中新增成員進行初始化,對繼承來的基類成員的初始化由基類完成。//多繼承時的建構函式://衍生類別名::衍生類別名(基類1形參,基類2形參,...基類n形參,本類形參):基類名1(參數), 基類名2(參數), ...基類名n(參數)//{//        本類成員初始化指派陳述式;//};//衍生類別與基類的建構函式://當基類中聲明有預設形式的建構函式或未聲明建構函式時,衍生類別建構函式的聲明中可以省略對基類建構函式的調用。//若基類中未聲明建構函式,衍生類別中也可以不聲明,全採用預設形式建構函式。//當基類聲明有帶形參的建構函式時,衍生類別也應聲明帶形參的建構函式,提供將參數傳遞給基類建構函式的途徑。//建構函式的調用次序://1. 調用基類建構函式,調用順序按照它們被繼承時聲明的順序(從左向右)。//2. 調用成員對象的建構函式,調用順序按照它們在類中聲明的順序。//3. 衍生類別的建構函式體中的內容。//衍生類別建構函式舉例:#include <iostream.h>class B1//基類B1,建構函式有參數{public:B1(int i) {cout<<"constructing B1 "<<i<<endl;}};class B2//基類B2,建構函式有參數{public:B2(int j) {cout<<"constructing B2 "<<j<<endl;}};class B3//基類B3,建構函式無參數{public:B3(){cout<<"constructing B3 *"<<endl;}};class C: public B2, public B1, public B3 {public://衍生類別的公有成員C(int a, int b, int c, int d): B1(a),memberB2(d),memberB1(c),B2(b)    {}private://衍生類別的私人對象成員B1 memberB1;B2 memberB2;B3 memberB3;};int main(void){C obj(1,2,3,4);return 0; }
//多繼承且有內嵌對象時的建構函式://衍生類別名::衍生類別名(基類1形參,基類2形參,...基類n形參,本類形參):基類名1(參數), 基類名2(參數), ...基類名n(參數),對象資料成員的初始化//{//        本類成員初始化指派陳述式;//};//建構函式的調用次序//1. 調用基類建構函式,調用順序按照它們被繼承時聲明的順序(從左向右)。//2. 調用成員對象的建構函式,調用順序按照它們在類中聲明的順序。//3. 衍生類別的建構函式體中的內容。//衍生類別解構函式舉例#include <iostream.h>class B1//基類B1聲明{public:B1(int i){   cout<<"constructing B1 "<<i<<endl;}~B1() {cout<<"destructing B1 "<<endl;}};class B2//基類B2聲明{public:B2(int j) {cout<<"constructing B2 "<<j<<endl;}~B2() {cout<<"destructing B2 "<<endl;}};class B3//基類B3聲明{public:B3(){cout<<"constructing B3 *"<<endl;}~B3() {cout<<"destructing B3 "<<endl;}};class C: public B2, public B1, public B3{public:C(int a, int b, int c, int d):B1(a),memberB2(d),memberB1(c),B2(b){}private:B1 memberB1;B2 memberB2;B3 memberB3;};int main(void){C obj(1,2,3,4);   return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.