问题 单项选择题

有如下程序:
#include<iostream>
using namespace std;
class Part
public:
Part(int x=0):val(x)cout< ~Part( )cout<<val;
pritave:
int val;

class Whole
public:
Whole(int x,int Y,int z=0):p2(x),p1(Y),val(z)cout<<val;
~Whole( )cout<<val;
pritave:
Part p1,p2;
int val;
f;
int main( )
Whole obj(1,2,3);
return 0;

程序的输出结果是

A.123321

B.213312

C.213

D.123123

答案

参考答案:B

解析: 当类中出现其他类的对象时,先对该对象初始化,即调用对象类的构造函数,然后调用本类的构造函数;进行撤销时,先调用本类的析构函数,然后再调用类中对象所对应的类的析构函数。对象的创建顺序和构造函数声明中的参数顺序无关,而同类中定义的先后顺序有关。故先创建p1,再创建p2,撤销时先撤销p2,再撤销p1。

多项选择题
单项选择题