有如下程序: #include<iostream> using namespace std; class CA{ public: CA(){cout+’A’;} }; class CB:private CA{ pu

admin2010-12-16  25

问题 有如下程序:
#include<iostream>
   using namespace std;
   class CA{
   public:
   CA(){cout+’A’;}
   };
   class CB:private CA{
   public:
   CB(){cout<<‘B’;}
   };
   int main(){
   CA a;
   CB b;
   return 0;
   }
   这个程序的输出结果是______。

选项

答案AAB。

解析  本题考查的是派生类的构造函数。建立派生类对象时,构造函数的执行顺序:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右),接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序->执行派生类的构造函数。题目中首先定义了类CA的对象a,输出’A’;然后定义CB类的对象b,因为 CB类派生自CA类,所以会先执行CA类的构造函数,再执行CB类的构造函数,即输出’A’和’B’。
转载请注明原文地址:https://kaotiyun.com/show/PbVp777K
0

最新回复(0)