首页 > 编程语言 > 详细

C++ 派生类对象的构造与析构过程

时间:2020-02-23 17:27:30      阅读:56      评论:0      收藏:0      [点我收藏+]

C++ 派生类对象的构造与析构过程

因为基类的成员变量和派生类的成员变量在内存中的连续的(下面程序会验证这一点),如下图所示:
技术分享图片
所以构造派生类对象的时候,构造成员变量的过程就像入栈一样:
技术分享图片 技术分享图片
那么很自然,派生类对象析构的时候就是出栈的过程,先进后出,后进先出:
技术分享图片技术分享图片

下边一个简单的程序验证这个结论:

#include <iostream>
using namespace std;

class base{
    int a;
public:
    base(const int& a):a(a){cout<<"基类构造函数\n";}
    void showAdd(){ cout<<"base类成员a的地址:\t"<<hex<<&a<<endl; }
    ~base(){cout<<"基类析构\n";}
};

class sub : public base {
    int b;
public:
    sub(const int& a, const int& b):base(a), b(b){cout<<"派生构造函数\n";}
    void showAdd() {base::showAdd(); cout<<"sub类成员变量b的地址:\t"<<hex<<&b<<endl; }
    ~sub(){cout<<"派生类析构\n";}
};

int main(){
    sub b(1,2);
    b.showAdd();
    return 0;
}
/*
输出结果:
基类构造函数
派生构造函数
base类成员a的地址:     0x7fffffffdb60
sub类成员变量b的地址:  0x7fffffffdb64
派生类析构
基类析构
*/

C++ 派生类对象的构造与析构过程

原文:https://www.cnblogs.com/rookiezjz/p/12350623.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!