C++关于一道类的构造和析构函数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:26:03
#include<iostream>
using namespace std;
class Myclass
{
public:
Myclass(){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;
}
输出结果是什么?为什么?
12244是错误的,我知道调用了构造函数,就是自己算出的和输出的不一样,不知道原因,求教给位大侠

题目应该改一下:
#include<iostream>
using namespace std;

class Myclass
{
public:
Myclass(int i){cout<<i<<endl;}

Myclass(const Myclass &x){cout<<2<<endl;}
Myclass operator=(const Myclass &x){cout<<3<<endl; return *this;}
~Myclass(){cout<<4<<endl;}
};

int main()
{
Myclass obj1(1), obj2(2), obj3(obj1);
return 0;
}

输出结果:
1
2
2
4
4
4

obj3(obj1)
这个掉用拷贝构造函数

Myclass obj1(1),obj2(2);
你这个是调用哪个构造函数?编译都没通过啊