首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++运算符重载的有关问题,初学者

2013-01-04 
C++运算符重载的问题,菜鸟,求助#include iostreamusing namespace stdclass Complex{private:int real,

C++运算符重载的问题,菜鸟,求助

#include <iostream>
using namespace std;
class Complex
{private:
    int real, imag;
public:
    Complex(int a, int b):real(a),imag(b){}
    Complex(){real=imag=0;}
    Complex operator+(Complex&);
    Complex operator-();
    Complex operator+(int);
    Complex &operator=(Complex&);
    Complex &operator++();
    Complex operator++(int);
    friend ostream &operator<<(ostream&, Complex&);
    friend istream &operator>>(istream&, Complex&);
};
Complex Complex::operator+(Complex&a)
{return Complex(real+a.real,imag+a.imag);}
Complex Complex::operator+(int a)
{return Complex(real+a, imag);}
Complex Complex::operator-()
{return Complex(real, imag);}
Complex &Complex::operator=(Complex&a)
{
    real = a.real;
    imag = a.imag;
    return *this;
}
Complex &Complex::operator++()
{
    real++,imag++;
    return *this;
}
Complex Complex::operator++(int)
{
    Complex a(*this);
    real++,imag++;
    return a;
}
ostream& operator<<(ostream&out, Complex&a)
{
    out<<a.real<<"+"<<a.imag<<"i"<<endl;
    return out;
}
istream& operator>>(istream&in, Complex&a)
{
    cout<<"请输入一个复数:";
    in>>a.real>>a.imag;
    return in;
}
int main()
{
    Complex c1(1,2), c2(2,1), c3, c4;
    int d1 = 1;
    cin>>c3;
    cout<<c3;
    c4 = c1 + c2;
    cout<<c4;
    cout<<c1+d1;
    cout<<-c1;
    c1 = c2;
    cout<<c1;
    cout<<c1++;
    cout<<++c1;
    return 0;
}
//4.定义复数类Complex,并重载相关运算符,使得可以进行如下运算:
//c1+c2;d1+c1;-c1;c1=c2;c++;++c(表示实部和虚部都加1);cout<<c1;cin>>c1;
//其中,c1、c2表示复数,d1表示实数。

求实现。
由于刚开始学习,有很多不懂的希望给出指导 = = 。
[解决办法]
#include <iostream>
 #include <string>
 using namespace std;
 class Complex
 {private:
     int real, imag;
 public:
     Complex(int a, int b):real(a),imag(b){}
     Complex(){real=imag=0;}
     Complex operator+(Complex&);
     Complex operator-();
     Complex operator+(int);
     Complex &operator=(const Complex&);
     Complex &operator++();


     Complex operator++(int);
     friend ostream &operator<<(ostream&, const Complex&);
     friend istream &operator>>(istream&, Complex&);
 };
 Complex Complex::operator+(Complex& a)
 {return Complex(real+a.real,imag+a.imag);}
 Complex Complex::operator+(int a)
 {return Complex(real+a, imag);}
 Complex Complex::operator-()
 {return Complex(real, imag);}
 Complex &Complex::operator=(const Complex& a)
 {
     real = a.real;
     imag = a.imag;
     return *this;
 }
 Complex &Complex::operator++()
 {
     real++,imag++;
     return *this;
 }
 Complex Complex::operator++(int)
 {
     Complex a(*this);
     real++,imag++;
     return a;
 }
 ostream& operator<<(ostream& out, const Complex& a)
 {
     out<<a.real<<"+"<<a.imag<<"i"<<endl;
     return out;
 }
 istream& operator>>(istream& in, Complex& a)
 {
     cout<<"请输入一个复数:";
     in>>a.real>>a.imag;
     return in;
 }
 int main()
 {
     Complex c1(1,2), c2(2,1), c3, c4;
     int d1 = 1;
     cin>>c3;
     cout<<c3;
     c4 = c1 + c2;
     cout<<c4;
     cout<<c1+d1;
     cout<<-c1;
     c1 = c2;
     cout<<c1;
     cout<<c1++;
     cout<<++c1;
     return 0;
 }
 

热点排行