c++派生类构造顺序

c++派生类构造顺序,第1张

1.整体构造顺序

前面我们提到过,一个类在构造的时候,先会构造其成员变量,在调用自身的构造函数。

对于派生类来说,除了可能有成员变量,还可能有多个基类。

在初始化派生类对象时,其构造函数要负责基类与基类成员对象的构造,还要负责自己成员对象的构造。

2.构造格式

前面也提到过,派生类只能使用构造函数初始化列表的方式,向基类与成员变量的构造函数传递参数完成初始化工作。

具体形式如下:
派生类构造函数(args):基类构造函数(args),成员对象1(args),成员对象2(args),…

派生类对象构造的顺序为:
1.先构造基类
2.再构造自身成员变量
3.最后调用自身构造函数

基类构造顺序由派生层次决定:最远的基类最先构造 成员构造顺序和定义顺序符合。


而析构函数的析构顺序与构造顺序相反。

3.派生类构造顺序实习
#include
using namespace std;

class A {
    int a;
    public:
        A(int a=0) {
            this->a = a;
            cout<<"a is: "<a<b = b;
            cout<<"b is: "<b<c = c;
            cout<<"c is: "<c<d = d;
            cout<<"d is: "<d<

代码输出结果:

b is: 100
d is: 200
c is: 11
c is: 22
a is: 10
a is: 2
a is: 3
d is init!

根据上面代码输出结果,再结合第二部分内容,不难看出派生类的实际构造顺序。

4.派生类析构顺序实例
#include
#include
using namespace std;

class A {
    public:
        virtual ~A() { cout<<"call A::~A()"<

代码运行结果为:

call B::~()
call A::~A()

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)