我正在编写代码来测试赋值运算符和复制构造函数的使用。代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
class fun {
int i;
public:
fun():i(1) {i=1;cout<<"in: cons\n";}
~fun() {cout<<"in: des\n";}
fun& operator=(fun b) {
cout<<"in: assignOp\n";
swap(this->i, b.i);
return *this;
}
fun(fun& b) {
cout<<"in: copy cons\n";
b.i = this->i;
}
void print() {
cout<<i<<endl;
}
};
main()
{
fun A;
fun B;
B = A;
A.print();
}
这是代码的输出:
在:缺点
在:缺点
在:复制缺点
在:assignOp
在:德
-1216991244
在:德
在:德
现在,关于输出有两件事我无法理解。
首先,为什么代码在复制构造函数中?其次,为什么'i'的值被打印为垃圾而不是'1'?
我是新手,如果我的疑问很明显,请原谅。