Hello Friend以下程序的输出是如此奇怪。我没理由。
#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;
}
答案 0 :(得分:8)
复制并粘贴错误?
此
temp.ab = ab + temp.ab;
temp.cd = cd + temp.cd;
应该是
temp.ab = ab + ob.ab;
temp.cd = cd + ob.cd;
答案 1 :(得分:3)
在operator+()
中,xyz temp;
未初始化,并包含该位置发生的任何垃圾。
答案 2 :(得分:3)
xyz xyz :: operator +(xyz ob)
您不使用任何ob对象。
答案 3 :(得分:1)
临时对象刚刚使用随机值初始化,而codeis只是添加它。
xyz xyz :: operator +(xyz ob)
{
xyz temp;
temp.ab = ab + ob.ab;
temp.cd = cd + ob.cd;
return temp;
}
输出:
6..8