单选题 有如下程序: #inc1ude<iostream> #inc1ude<cstring> using namespace std; c1ass XCF{ int a; public: XCF (int aa=0): a(aa){cout<<"1";} XCF(XCF&x){a=x.a;cout<<"2";} ~XCF(){cout<<a;} int Geta(){returna;} }; int main(){ XCF dl(5), d2(d1); XCF *pd=new XCF(8); cout<<pd—>Geta(); delete pd; return 0; } 运行时的输出结果是( )。
【正确答案】 B
【答案解析】解析:在这个程序中在建立对象d1(5)时,调用构造函数XCF(int aa=0):a(aa) {cout<<"1";),输出1;在建立d2(d1)时,调用拷贝构造函数XCF(XCF&x){a=x.a, cout<<"2";),输出2:在建立new XCF(8)对象时,调用构造函数XCF (int aa=0):a(aa){cout<<"1";},输出1;语句cout<<pd—>Geta()的功能是输出8;语句delete pd;调用析构函数~XCFO,输出8:当退出程序时,分别释放对象d2、d1,输出55。