您的位置:首页 > 编程语言 > C语言/C++

C++面向对象友元函数运算符的重载

2018-01-01 17:33 405 查看
以课本复数类为例:

具体看代码,哪里不懂可以评论留言。

#include <iostream>
using namespace std;
class Complex{
public:
Complex(){real = 0,imag = 0;}
Complex(double r=0,double i=0):real(r),imag(i){}
void display();
friend Complex operator+(Complex,Complex);
Complex operator++();
Complex operator++(int);
// operator double(){return real;}
friend ostream& operator <<(ostream&,Complex&);
friend istream& operator >>(istream&,Complex&);
private:
double real,imag;
};
void Complex::display(){
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
Complex operator+(Complex c1,Complex c2){
return Complex(c1.real+c2.real,c1.imag+c2.imag);
}
Complex Complex::operator++(){
real++;
imag++;
return *this;
}
Complex Complex::operator++(int){
real++;
imag++;
return *this;
}
ostream & operator <<(ostream &x,Complex &c){
x<<"("<<c.real<<","<<c.imag<<"i)";
return x;
}
istream & operator >>(istream&x,Complex &c){
x>>c.real>>c.imag;
return x;
}
int main(){

Complex c1(9,5),c2(1,1);
// cin>>c1>>c2;
c1.display();
c2.display();
(c1+c2).display();
++c2;
c2.display();
c1++;
(c1+c2).display();
Complex c = c1+c2;
cout<<c;
double d;
c = 2.5 + c1;
cout<<c<<endl;
c = c1+1.5;
cout<<c<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: