谁帮我分析一下这个程序的输出结果

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:55:02
#include<iostream>
using namespace std;
class AA{
public:
AA(){cout<<"AAJIE"<<endl;}
virtual void f(){cout<<"AA"<<endl;}
};
class BB:public AA{
public:
BB(){cout<<"BB界"<<endl;}
};
class CC:public BB{
public:
CC(){cout<<"CCJIE"<<endl;}
virtual void f(){BB::f();cout<<"CC"<<endl;}
};

int main()
{
AA aa,*p;
BB bb;
CC cc;
p=&cc;
p->f();
return 0;
}

AA aa;调用AA类的构造函数,会输出AAJIE;
BB bb;先调用父类AA的构造函数,输出AAJIE,再调用BB类构造函数,输出BB界;
CC cc;先调用父类BB的父类AA的构造函数,输出AAJIE,再调用BB的构造函数,输出BB界,最后调用自身的构造函数,输出CC;
p->f();调用的是cc的f函数,即先调用BB::f(),BB类继承了AA的f(),所以输出AAJIE,再cout<<""CC""输出CC.