首页 > 代码库 > C++运算符重载为友元函数学习笔记
C++运算符重载为友元函数学习笔记
初探C++运算符重载学习笔记
在上面那篇博客中,写了将运算符重载为普通函数或类的成员函数这两种情况。
下面的两种情况发生,则我们需要将运算符重载为类的友元函数
<1>成员函数不能满足要求
<2>普通函数又不能访问类的私有成员时
举例说明:
class Complex{ double real, imag; public: Complex(double r, double i):real(r), imag(i){ }; Complex operator+(double r); }; Complex Complex::operator+(double r){ return Complex(real + r, imag); }
定义一个复数类,重载‘+‘运算符,经过重载之后
Complex c ;c = c + 5; //有定义,相当于 c = c.operator +(5);
但是如果出现5+c,则编译出问题。此时还需要重载普通函数。
Complex operator+ (double r, const Complex & c) { return Complex( c.real + r, c.imag);}
能解释 5+c,但是普通函数无法访问类的私有成员。
这时就需要重载为类的友元函数
class Complex { double real, imag; public: Complex( double r, double i):real(r),imag(i){ }; Complex operator+( double r ); friend Complex operator + (double r, const Complex & c);};
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。