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


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

    因为基类的成员变量和派生类的成员变量在内存中的连续的(下面程序会验证这一点),如下图所示:

    所以构造派生类对象的时候,构造成员变量的过程就像入栈一样:

    那么很自然,派生类对象析构的时候就是出栈的过程,先进后出,后进先出:

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

    #include <iostream>
    using namespace std;
    
    class base{
        int a;
    public:
        base(const int& a):a(a){cout<<"基类构造函数
    ";}
        void showAdd(){ cout<<"base类成员a的地址:	"<<hex<<&a<<endl; }
        ~base(){cout<<"基类析构
    ";}
    };
    
    class sub : public base {
        int b;
    public:
        sub(const int& a, const int& b):base(a), b(b){cout<<"派生构造函数
    ";}
        void showAdd() {base::showAdd(); cout<<"sub类成员变量b的地址:	"<<hex<<&b<<endl; }
        ~sub(){cout<<"派生类析构
    ";}
    };
    
    int main(){
        sub b(1,2);
        b.showAdd();
        return 0;
    }
    /*
    输出结果:
    基类构造函数
    派生构造函数
    base类成员a的地址:     0x7fffffffdb60
    sub类成员变量b的地址:  0x7fffffffdb64
    派生类析构
    基类析构
    */
    
  • 相关阅读:
    requireJS的使用_API-1
    C# WebService动态调用
    Jquery 分页插件 Jquery Pagination
    脸识别API微软牛津项目
    从源码看Android中sqlite是怎么读DB的(转)
    浅谈SQL注入风险
    django
    java自动转型
    二叉搜索树(Binary Search Tree)--C语言描述(转)
    微软2014校园招聘笔试试题
  • 原文地址:https://www.cnblogs.com/rookiezjz/p/12350623.html
Copyright © 2020-2023  润新知