代入演算子とコピー コンストラクターの使用をテストするコードを書いています。コードは次のとおりです。
#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();
}
コードの出力は次のとおりです。
in: 短所
in: 短所
in: 短所をコピー
in: assignOp
in: デス
-1216991244
in: デス
in: デス
ここで、出力について理解できないことが 2 つあります。
まず、なぜコードがコピー コンストラクター関数に入るのでしょうか。次に、「i」の値が「1」ではなくガベージとして出力されるのはなぜですか?
私は初心者なので、疑いが明らかな場合はご容赦ください。