这道c++题哪位同学可以讲讲怎么运行啊

class AA{
public:
  void f(){cout<<"AA";}
};

class BB:public AA{
public:
    BB(){cout<<"BB";}
};
class CC:public BB{
  public:
         void f(){BB::f();cout<<"CC";}
};
int main(){
AA aa,*p;
BB bb;
CC cc;
p=&cc;
p->f();
return 0;
}

img


调用默认构造函数,继承的时候构造函数会调用基类的构造函数,然后子类对象赋值给基类的指针,基类指针的函数调用是基类的~

BB bb构造输出字符串BB
CC cc构造输出字符串BB
由于f函数不是虚函数,因此p->f()实际执行的是AA类的f函数,输出AA
最终输出BBBBAA

img