可以看一下之前的博客:C++之基类的析构函数要声明成虚函数
在C++的继承中,在子类对象构造时,需要调用父类构造函数对其继承来的成员进行初始化,在子类进行析构时,需要调用父类的析构函数对其继承来的成员进行清理,过程如下:
(1)子类对象在创建时会首先调用父类的构造函数
(2)父类构造函数执行结束后,执行子类的构造函数
(3)当父类的构造函数有参数时,需要在子类的初始化列表中显示调用
(4)析构函数的调用先后顺序与构造函数相反
(5)如果 子类1:父类1,父类1:父类2,那么初始化子类1的时候将首先调用父类2的构造函数,然后为父类1
#include <iostream>
using namespace std;
class Parent
{
public:
Parent(int a ,int b)
{
this->a = a;
this->b = b;
}
private:
int a;
int b;
};
class Child : public Parent
{
public:
Child(int a)
{
}
private:
};
int main()
{
Child c(1);
system("pause");
return 0;
}
代码编译不通过,原因是父类重写了有参的构造函数,我们需要为父类提供参数,因此C++编译器为我们提供了如下解决方法:
Child1(int a,int b,int c) : Parent1(a,b)
通过子类的构造函数为父类传参