类的操作运算符重载函数有以下特性:
- this参数在实际的重载函数中会被隐藏
- 返回值的内存空间若在外面已申请,可以为reference,提升返回数据的性能。
- 传递者在传递参数时无需知道接收者是以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 版权协议,转载请附上原文出处链接和本声明。