有如下程序: #include <iostream> using namespace std; class AA { public: virtual void f(

admin2010-12-16  16

问题 有如下程序:
       #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;
         }
   运行后的输出结果______。

选项

答案BBBBAACC

解析 本题考核虚函数。本题中,函数f()在基类AA和派生类CC中都声明为虚函数,所以采用动态联编。主函数首先定义类AA的对象aa和指针对象p,然后定义了类BB的对象bb,此时调用了类BB的构造函数输出BB。再定义类CC的对象cc,由于类CC是类BB的派生类,所以此时又调用类BB的构造函数输出 BB。最后执行语句“p=&cc;p->f();”,输出AA和 CC。
转载请注明原文地址:https://kaotiyun.com/show/uzVp777K
0

最新回复(0)