今天在网上看到了一篇别人的腾讯面试经历,看到他给的几个面试题,基本上都是和c++有关的,有两个让我纠结了好久,以下是那位朋友写的博客。大家可以看看,对自己的学习有帮助的。
下面是我对于他博客中两个问题的看法。
struct A
{
A(){std::cout<<"A";}
};
struct B:public A
{
B(){std::cout<<"B";}
};
struct C
{
C(){std::cout<<"C";}
B b;
A a;
};
void main()
{
C c;
}
运行结果 ABAC
这是一个写运行结果的题,起初我有点糊涂,以为只会输出C 后来,经过高人的指点,明白了,因为b,a 是c 的成员,所以类C会先构造B对象,在构造B的同时,因为B派生自A,所以会先输出A,再输出B,又因为A a,所以输出A, 最后输出C。
为什么最后输出C呢,类要先构造对象中的成员再执行构造函数体。
ok,这个弄明白了。