注册 登录
编程论坛 C++教室

c++程序,编译器vc++6.0 求大神看看哪错了, 运行结果不对

rwzly4537 发布于 2013-10-30 21:59, 312 次点击
程序代码:

#include <iostream.h>
class com
{
public:
//运算符重载
    friend istream & operator >> (istream &,com &);
        friend ostream & operator << (ostream &,com &);
    friend com & operator + (com &,com &);
private:
    int real,image;
};
ostream & operator << (ostream & output,com &c)
{
    output<<"("<<c.real<<"+"<<c.image<<"i)";
    return output;
}
istream & operator >> (istream & input,com & c)
{
    input>>c.real>>c.image;
    return input;
}
com& operator + (com &a,com &b)
{
com c;
c.real=a.real+b.real;
c.image=a.image+b.image;
return c;
}
int main()
{
    com a,b;
    cout<<"input a=";
    cin>>a;
    cout<<"input b=";
    cin>>b;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    cout<<"a+b="<<a+b<<endl;
    return 0;
}

3 回复
#2
rjsp2013-10-31 08:27
程序代码:
#include <iostream>

class com
{
public:
    com( int real=0, int image=0 ) : real_(real), image_(image)
    {
    }

private:
    int real_, image_;

    friend std::istream& operator >> ( std::istream&, com& );
    friend std::ostream& operator << ( std::ostream&, const com& );
    friend com operator + ( const com&, const com& );
};

com operator+ ( const com& a, const com& b )
{
    return com( a.real_+b.real_, a.image_+b.image_ );
}

std::ostream& operator << ( std::ostream& output, const com& c )
{
    output << '(' << c.real_ << '+' << c.image_ << "i)";
    return output;
}
std::istream& operator >> ( std::istream& input, com& c )
{
    input >> c.real_ >> c.image_;
    return input;
}

using namespace std;

int main()
{
    com a, b;
    cout << "input a=";
    cin  >> a;
    cout << "input b=";
    cin  >> b;
    cout << "a="   << a << endl;
    cout << "b="   << b << endl;
    cout << "a+b=" << a+b << endl;

    return 0;
}
#3
梦想我来造2013-10-31 09:00
如图:
输入注意不要加逗号,同时切换到英文 输入法即可。
#4
rwzly45372013-10-31 23:56
找到原因了 因为c在重载加法时是局部变量 所以返回值不能用引用
1