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

admin2009-03-17  24

问题 有如下程序:
#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

解析 本题考查的知识点是:派生类的构造函数。建立派生类对象时,构造函数的执行顺序如下:
(1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右):
(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下):
(3)执行派生类的构造函数。题目中的主函数中首先定义了一个CA类对象a,所以首先输出一个’A’。然后定义了一个CB类对象b,由于CB类派生自CA类,所以应先执行CA类的构造函数,再执行自身的构造函数,即接着输出一个’A’和一个’B’。故本题最终输出的结果是AAB。
转载请注明原文地址:https://kaotiyun.com/show/3ojp777K
0

最新回复(0)