派生类在构造对象时,先构造基类对象,再构造派生类自身的成员
#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
posted on 2013-04-13 00:19 wickedboy237 阅读(527) 评论(0) 编辑 收藏 举报