您的位置:首页 > 其它

派生类在构造对象时,先构造基类对象,再构造派生类自身的成员

2013-04-13 00:19 183 查看
#include <iostream>

using namespace std;

struct A

{

  A(){cout << "A:"<< endl;}

};

struct B : public A

{

  B(){cout << "B:" << endl;

};

struct C : public B

{

  C(){cout << "C:" << endl;

  B b;

  A a;

};

int main()

{

  C c;

  return 0;

}

开始猜测运行结果为:A-B-A-A-B-C;因为要先将C类中的各元素的对象都构造完成后,再去构造类C;

正确答案:A-B-A-B-A-C;

正解:由于b,a都是class C的成员,故应该在最后构造自身的成员,先构造C的基类B,在构造B前,先构造B的基类A,即先输出A-B,构造完后,再构建成员b,输出A-B,然后再构建a,输出A,最后对象c构建成功输出C,即A-B-A-B-A-C
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: