VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 503|回复: 2

[求助] 一个类中组合了两个类,先构造哪个

[复制链接]
38_avatar_middle
online_vip 2191265529 发表于 2017-10-24 14:51:20 | 显示全部楼层 |阅读模式
3驿站币


在创建类C对象时,先创建B还是先创建A?

#include <iostream>
#include<stdlib.h>
using namespace std;

class A {
public:
        A() { cout << "A"; }
        ~A() { cout << "~A"; }
};

class B {
public:
        B() { cout << "B"; }
        ~B() { cout << "~B"; }

private:
        A a;
};

class C : public A {
public:
        C() { cout << "C"; }
        ~C() { cout << "~C"; }

private:
        B b;
        A a;
};

int main()
{
        cout << "=======================================\n";
        cout << "A类对象的构造过程: ";
        A a;
        cout << "\n======================================\n\n";

        cout << "B类对象的构造过程: ";
        B b;
        cout << "\n=======================================\n\n";

        cout << "C类对象的构造过程: ";
        C *p = new C();
        // 动态申请的内存别忘了释放,否则不会调用析构函数,任何时候delete 空指针也不会错
        delete p;

        // 注意,如果这里没有刷新缓冲区的话最后的那三个析构函数被执行,但数据留在缓冲区中,没有输出
        // 因为析构函数里面也没有cout<<endl;之类的刷新缓冲区,没有刷新缓冲区的的输出结果如图二
        cout << "\n=======================================\n";

        system("pause");
        return 0;
}
2.png

最佳答案

查看完整内容

C构造过程: 先构造C的基类A,A的构造函数输出A 再构造成员b,B的构造过程先构造基类A,在执行B的构造函数,输出AB 在构造成员a,A的构造函数输出A 最后执行C的构造函数,输出C。 所以构造过程输出A AB A C 析构过程反过来析构




上一篇:原来for语句执行不是先把内部三条语句执行完
下一篇:关于CToolBar::_GetButton

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

07_avatar_middle
在线会员 freehawkzk 发表于 2017-10-24 14:51:21 | 显示全部楼层
C构造过程:
先构造C的基类A,A的构造函数输出A
再构造成员b,B的构造过程先构造基类A,在执行B的构造函数,输出AB
在构造成员a,A的构造函数输出A
最后执行C的构造函数,输出C。
所以构造过程输出A AB A C
析构过程反过来析构

点评

太棒了,感谢。  发表于 2017-10-26 22:59

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
38_avatar_small 2191265529 + 2 + 2 很给力!

查看全部评分

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-14 14:55

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表