操作符重载

阅读量: 鲁文奎 2021-04-22 19:14:24
Categories: Tags:

操作符重载

C中实现操作符的相关行为 需要通过函数来实现, 在C++中可通过操作符重载来做

操作符重载可以以成员函数 或 全局函数来实现, 某些细节上(如<<、>>)等, 需要仔细考量使用哪种实现方式

inline complex& __doapl(complex* ths, const complex& r)
{
    ths->re += r.re;
    ths->im += r.im;
    return *ths;
}

inline complex& complex::operator += (const complex& r)
{
    return __doapl(this, r);
}

问题1: 为何在+=中要抽象__doapl函数?

_doapl在其它地方可能会被用到, 所以在这里抽象出来.

inline complex
operator + (const complex& x, const complex& y)
{
    return complex( real(x) + real(y), 
                    imag(x) + imag(y));
}

注意: 上面这个函数绝不可return by reference, 因为, 它们的返回值的必定是localobject.

创建临时对象(对象无名称):

temp object (临时对象) typename();