C++操作运算符重载

  • Post author:
  • Post category:其他



类的操作运算符重载函数有以下特性:

  1. this参数在实际的重载函数中会被隐藏
  2. 返回值的内存空间若在外面已申请,可以为reference,提升返回数据的性能。
  3. 传递者在传递参数时无需知道接收者是以reference还是以变量的方式接收的,以reference接收,数据传输性能更快,不涉及内存数据的拷贝
/* 友元函数可以访问对象的私有数据成员 */
inline Complex& __doapl (Complex *ths, const Complex& c) {
    ths->re += ths->re + c.re;
    ths->im += ths->im + c.im;
    return *ths;
}

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

Complex c1(1, 1);
Complex c2(5);

c2 += c1;


/*不是类的成员函数,无法获取类对象的私有成员数据
   返回值为local object, 临时对象在函数执行完后,内存会被释放*/
inline Complex operator + (const Complex& a, const Complex& b) {
    return (a.real() + b.real(), a.imag() + b.imag());
}


补充一个知识点:

另外在结构体外实现的函数,加inline表示建议该函数为inline函数,在结构体内部实现的函数,默认为inline函数,inline函数执行的速度快。



版权声明:本文为a1092721693原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。