单选题 有如下程序:
#include<iostream>
using namespace std;
class MyClass{
putdic:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass& x){cout<<2;}
MyClass& operator=(const MyClass&x)
{cout<<3;return*this;}
~MyClass(){cout<<4;}
};
int main(){
MyClass obj1(1),obj2(2),obj3(obj1);
return 0;
}
运行时的输出结果是______。
【正确答案】 A
【答案解析】[解析] 本题考查构造函数重载及析构函数调用。题中,生成的对象obj1和obj2调用第1个构造函数,输出两个1;obj3调用第2个构造函数,输出2。撤消对象时,析构函数调用顺序与构造函数刚好相反。依次撤消对象obj3、obj2和obj1,输出三个4。故最终的输出结果为:112444。