C++學習筆記_2:單一繼承時的建構函式與解構函式

來源:互聯網
上載者:User
//繼承時的建構函式: //基類的建構函式不被繼承,需要在衍生類別中自行聲明。//聲明建構函式時,只需要對本類中新增成員進行初始化,對繼承來的基類成員的初始化由基類完成。//衍生類別與基類的建構函式://1.當基類中聲明有預設形式的建構函式或未聲明建構函式時,衍生類別建構函式的聲明中可以省略對基類建構函式的調用。//2.若基類中未聲明建構函式,衍生類別中也可以不聲明,全採用預設形式建構函式。//3.當基類聲明有帶形參的建構函式時,衍生類別也應聲明帶形參的建構函式,提供將參數傳遞給基類建構函式的途徑。//單一繼承時的建構函式舉例: //衍生類別名::衍生類別名(基類所需的形參,本類成員所需的形參):基類名(參數)//{//        本類成員初始化指派陳述式;//};//建構函式的調用次序://1.調用基類建構函式,調用順序按照它們被繼承時聲明的順序(從左向右)。//2.調用成員對象的建構函式,調用順序按照它們在類中聲明的順序。//3.衍生類別的建構函式體中的內容。//繼承時的解構函式//1.解構函式也不被繼承,衍生類別自行聲明。//2.聲明方法與一般(無繼承關係時)類的解構函式相同。//3.不需要顯式地調用基類的解構函式,系統會自動隱式調用。//4.解構函式的調用次序與建構函式相反。#include <iostream.h>class B{     public:B(){b=0;cout<<"B's default constructor called."<<endl;}B(int i){b=i;cout<<"B's constructor called." <<endl;}~B(){cout<<"B's destructor called."<<endl;}void Print() const{cout<<b<<endl;}     private:     int b;};class C:public B{    public:C(){c=0;cout<<"C's default constructor called."<<endl;}C::C(int i,int j):B(i)//C(int i,int j){c=j;cout<<"C's constructor called."<<endl;}~C(){cout<<"C's destructor called."<<endl;}void Print() const{B::Print();cout<<c<<endl;}private:  int c;};int main(){C obj(5,6);obj.Print();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.