c++ 运算符重载

来源:互联网 发布:软件测试的基本原则 编辑:程序博客网 时间:2024/06/05 23:54
 今天看到重载的知识,以前虽然接触过构造函数的重载。但对普通的重载函数并不理解,我看的是谭浩强的基础教材。里面有道例题,是对运算符+的重载,我看了照敲一遍感觉并没有学到什么,就尝试写了个对输出流<<的重载。过程并不像想象的简易,以前尝试自己写过string类,结果也是卡在<<的重载上了。 下面代码重载了两个运算符,分别是‘+’和‘<<’,关于‘+’的重载比较简单,就不赘述呢。主要记述对重载‘<<’的理解。 首先输出流‘<<‘的重载格式一般是 :`     friend  &ostream operator << (ostream& os,Complex& c); 一定要声明为友员类,ostream应该是私有的。而且我试过这不加取值符号&,就会报错。而对’+‘而言,不加取值符没有影响。而且’<<‘是不能作为成员函数的,对这些我都理解得不太透彻。知其然,而不知其所以然。还是用代码解释吧

#include

include

using namespace std;
class Complex
{
private:
double real;
double imag;
public:
Complex();
Complex(double,double);
Complex operator + (Complex c2);
void display();
friend &ostream operator << (ostream& os,Complex& c);
};

Complex::Complex()
{
}

Complex::Complex(double i,double j)
{
real=i;
imag=j;
}

Complex Complex::operator + (Complex c2)
{
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}

ostream& operator<<(ostream& os,Complex& c)
{
os<<”(“<

`

原创粉丝点击