45_詳解 子類中的構造

1、子類會默認調用 父類的 無參構造

2、子類 必須顯示 使用初始化列表 調用 父類的有參構造

調用形式:父類名稱。

Son(int a,int b):Base(a),b(b)
{
    //this->b = b;
}
class Base
{
private:
    int a;
public:

    Base()
    {
        cout<<"父類的無參構造函數"<<endl;
    }
    Base(int a)
    {
        this->a = a;
        cout<<"父類的有參構造函數"<<endl;
    }
    ~Base()
    {
        cout<<"父類中的析構函數"<<endl;
    }
};
class Son:public Base
{
private:
    int b;
public:
    Son()
    {
        cout<<"子類的無參構造"<<endl;
    }
    Son(int b)
    {
        this->b = b;
        cout<<"子類的有參構造函數int"<<endl;
    }

    //子類必須用 初始化列表 顯示的調用父類的有參構造
    //父類名稱(參數)
    Son(int a,int b):Base(a)//顯示的調用父類的有參構造
    {
        this->b = b;
        cout<<"子類的有參構造函數 int int"<<endl;
    }
    ~Son()
    {
        cout<<"子類中的析構函數"<<endl;
    }
};
void test01()
{
    //子類 默認 會調用 父類的無參構造
    //Son ob1(10);

    //子類必須用 初始化列表 顯示的調用父類的有參構造
    //父類名稱+()
    Son ob2(10,20);

}

運行結果:

案例提高:

如果父類有參構造:

 Base(int a, int data)
{
    this->a = a;
    this->data = data;
    cout<<"父類的有參構造函數"<<endl;
}

子類想調用 父類有參構造

//子類必須用 初始化列表 顯示的調用父類的有參構造
//父類名稱(參數)
Son(int a,int b, int c):Base(a,c),b(b)//顯示的調用父類的有參構造
{
    //this->b = b;
    cout<<"子類的有參構造函數 int int"<<endl;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章