问题 单项选择题

如下程序运行时的输出结果是
#include<iostream>
using namespace std;
class ONE
int c;
public:
ONE( ):c(0)eout<<1;
ONE(int n):C(n)cout<<2;

class TW0
ONE onel;
ONE one2;
public:
TWO(int m):one2(m)eout<<3;

int main( )
TWO t(4);
return 0;

A) 3
B) 23
C) 123
D) 213

答案

参考答案:C

解析: 派生类中含有对象时构造函数的调用顺序是:则先执行基类的构造函数,然后执行对象成员的构造函数,最后执行派生类的构造函数。析构函数的调用次序与构造函数的次序则相反。所以在创建对象t4.时,先调用基类无参构造函数0NE( ):c(0),打印1:然后调用对象one2(m)的构造函数ONE(int n):c(n),打印2;最后调用派生类的构造函数TWO(int m),打印3。

选择题
单项选择题