1

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;
}
4

4 に答える 4

8

コピー&ペーストエラー?

これ

temp.ab = ab + temp.ab;
temp.cd = cd + temp.cd; 

する必要があります

temp.ab = ab + ob.ab;
temp.cd = cd + ob.cd; 
于 2012-04-20T13:37:40.517 に答える
3

ではoperator+()xyz temp;は初期化されておらず、その場所にたまたまあったゴミが含まれています。

于 2012-04-20T13:37:05.017 に答える
3
xyz xyz :: operator +(xyz ob)

obオブジェクトは一切使用しません。

于 2012-04-20T13:37:55.380 に答える
1

一時オブジェクトは作成されたばかりで、ランダムな値で初期化され、コードが追加されています。

xyz xyz :: operator +(xyz ob)
{
xyz temp;
temp.ab = ab + ob.ab;
temp.cd = cd + ob.cd;
return temp;
}

出力:

6..8

于 2012-04-20T13:55:18.767 に答える