こんにちは、以下のプログラムの出力が非常に奇妙です。私は理由を得ていない。 operator+()
でオペレータのオーバーロードが異常に動作する理由
#include <iostream>
using namespace std;
class xyz
{
private:
int ab, cd;
public:
xyz()
{
}
xyz(int i, int j)
{
ab = i;
cd = j;
}
xyz operator+(xyz);
void show()
{
cout << ab << " .... "<< cd;
}
};
xyz xyz :: operator +(xyz ob)
{
xyz temp;
temp.ab = ab + temp.ab;
temp.cd = cd + temp.cd;
return temp;
}
int main()
{
// xyz xy, yz;
xyz xy(2, 3);
xyz yz(4, 5);
xy = xy + yz;
xy.show();
return 0;
}
デバッガでそれを実行してみましたか?または**私たちは**デバッガですか? – Neal
@Neal:はい、特にtemp.ab = ab + temp.abというコードをデバッグしました。 temp.cd = cd + temp.cd;コードが異常に動作する –
以下のソリューションに加えて、デフォルトのコンストラクタでメンバ変数を初期化します。 xyz():ab(0)、cd(0){} –