准则:尽量使用传引用f而不是直接传递对象
目的:减少开销,传引用相当于使用原对象,而传递对象需要拷贝一份。
返回值是引用还是对象要看情况而定:
不能使用返回引用的情况是:当返回的是一个局部对象时。
#ifndef COMPLEX_H_
#define COMPLEX_H_
#include <ostream>
class complex
{
public:
inline double real()const { return re; }
inline double imag()const { return im; }
inline
complex(double c)
:re(c),im(0)
{
}
complex(double r = 0, double i = 0)
:re(r), im(i)
{
}
//return by ref
complex&
operator += (const complex& c2)
{
this->re += c2.re;
this->im += c2.im;
return *this;
}
complex&
operator += (double re)
{
this->re += re;
return *this;
}
private:
double re, im;
};
//全局函数 return by value
complex operator + (double re, complex c)
{
return complex(re + c.real(), c.imag());
}
complex operator + (complex c, double re)
{
return complex(re + c.real(), c.imag());
}
complex operator + (complex x, complex y)
{
return complex(x.real() + y.real(), x.imag() + y.imag());
}
//重载<< return by ref;
std::ostream&
operator <<(std::ostream& os, complex c)
{
return os << "(" << c.real() << "," << c.imag() << ")";
}
#endif // !COMPLEX_H_