C++继承中的构造和析构

可以看一下之前的博客: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)

通过子类的构造函数为父类传参

发布了106 篇原创文章 · 获赞 269 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_32642107/article/details/104878771
今日推荐