问题
填空题
有下列程序: #include<iostream> using namespace std; class ONE { public: virtual void f(){COUt<<"1";} }; c1assTWO:public ONE { public:TWO(){cout<<"2";} }; class THREE:public TWO {public: virtual void f(){TWO∷f();cout<<"3";} }; int main() { ONE aa,*p; TWO bb; THREE cc; p=&cc; p->f(); return 0; } 执行上面程序的输出结果是______。
答案
参考答案:2213
解析:
此题考查的是派生类的构造和析构函数。建立TWO的对象bb时,调用TWO的构造函数,输出“2”;THREE类又派生于TWO类,所以建立THREE类的对象cc时又会输出“2”;ONE类的对象指针p指向了THREE类的ONE类的虚函数f(),输出“1”;最后调用THREE类的f(),输出“3”。故最终的输出结果是2213。