C++ --- 派生类的构造过程

目录

派生类怎么初始化从基类继承来的成员变量?

派生类对象构造和析构的过程

示例代码


首先,派生类从基类可以继承来所有的成员(成员变量和成员方法)。

派生类怎么初始化从基类继承来的成员变量?

        解答:通过调用基类相应的构造函数来初始化

  • 派生类的构造函数和析构函数,负责初始化和清理派生类部分;
  • 派生类从基类继承来的成员的初始化和清理由基类的构造函数和析构函数来负责。

派生类对象构造和析构的过程:

  1. 派生类调用基类的构造函数,初始化从基类继承来的成员;

  2. 派生类调用自己的构造函数,初始化派生类自己的成员;

  3. .............派生类对象的作用域到期了;

  4. 派生类调用自己的析构函数,释放派生类成员可能占用的外部资源(堆内存、文件);

  5. 系统自动调用基类的析构函数,释放派生类内存中从基类继承来的成员可能占用的外部资源(堆内存、文件)。

示例代码:

#include<iostream>

using namespace std;

/*
    派生类的构造过程

    1.派生类从基类可以继承来所有的成员(变量和方法)
    
    派生类怎么初始化从基类继承来的成员变量?
        解答:通过调用基类相应的构造函数来初始化
    
    派生类的构造函数和析构函数,负责初始化和清理派生类部分
    派生类从基类继承来的成员的初始化和清理由基类的构造函数和析构函数来负责

    派生类对象构造和析构的过程:
        1.派生类调用基类的构造函数,初始化从基类继承来的成员
        2.派生类调用自己的构造函数,初始化派生类自己的成员
            .......派生类对象的作用域到期了
        3.派生类调用自己的析构函数,释放派生类成员可能占用的外部资源(堆内存、文件)
        4.系统自动调用基类的析构函数,释放派生类内存中从基类继承来的成员可能占用的外部资源(堆内存、文件)
*/

class Base
{
    public:
        Base(int data) : ma(data) {cout << "Base()" << endl;}
        ~Base() {cout << "~Base()" << endl;}
    protected:
        int ma;
};

class Derive : public Base
{
    public:
        Derive(int data)
            : Base(data),mb(data)
            {
                cout << "Derive()" << endl;
            }
        ~Derive()
        {
            cout << "~Derive()" << endl;
        }
    private:
        int mb;
};


int main()
{
    Derive d(10);

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值