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;
}