填空题
有如下程序:
#include <iostream>
using namespace std;
class AA
{
public:
virtual void f()
{
cout<<"AA";
}
};
class BB: public AA
{
public:
BB()
{
cout<<"BB";
};
class CC: public BB
{
public:
virtual void f()
{
BB::f();
cout<<"CC";
}
};
int main()
{
AA aa,*p; BB bb; CC cc;
p=&cc;
P->f();
return 0;
}
运行后的输出结果{{U}} 【15】 {{/U}}。
【正确答案】
1、BBBBAACC
【答案解析】[解析] 本题考核虚函数。本题中,函数f()在基类AA和派生类CC中都声明为虚函数,所以采用动态联编。主函数首先定义类AA的对象aa和指针对象p,然后定义了类BB的对象比,此时调用了类BB的构造函数输出BB。再定义类CC的对象cc,由于类CC是类BB的派生类,所以此时又调用类BB的构造函数输出BB。最后执行语句“p=&cc;p->f();”,输出AA和CC。