当类中有多个构造函数时,建立对象时是不是都要调用如下面的程序 #include<iostream> using namespace std; class MyClass{ public: 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: } 其最后的输出结果是什么?MyClass(const MyClass&x){cout<<2;}这个构造函数什么时候调用的?
2011-09-15 10:06
提问者采纳
建立obj3的时候 因为 obj1已经存在的对象 用obj1对象 做参数 调用的构造函数 就是 它了MyClass(const MyClass&x){cout<<2;} 输出 112444 建立 obj1 时调用构造函数 MyClass(int i=0){cout<<1;} 输出1 建立 obj2 时调用构造函数 MyClass(int i=0){cout<<1;} 输出1 建立obj3 时调用构造函数MyClass(const MyClass&x){cout<<2;} 输出2 程序结束 调用析构函数 析构函数 调用规则是 先建立的对象 后析构 ,后建立的对象先析构 所以 先调用 obj3 的析构函数输出4 然后 obj2 的析构函数输出4 最后obj1 的析构函数输出4