初探C++运算符重载学习笔记<2> 重载为友元函数
2024-09-07 12:29:25
在上面那篇博客中,写了将运算符重载为普通函数或类的成员函数这两种情况。
以下的两种情况发生。则我们须要将运算符重载为类的友元函数
<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);
};
最新文章
- 关于访问链接返回XML的获取数据
- C#之不借助第三变量交换两变量值
- 爬虫技术 -- 进阶学习(七)简单爬虫抓取示例(附c#代码)
- 10.Android之ProgressDialog进度对话框学习
- python_way ,day5 模块,模块3 ,双层装饰器,字符串格式化,生成器,递归,模块倒入,第三方模块倒入,序列化反序列化,日志处理
- 初识vi编辑器
- Jquery 插件初学习
- Python协程深入理解
- Winform应用程序实现通用遮罩层二
- React 系列教程2:编写兰顿蚂蚁演示程序
- VS2017安装过程中【工作负载】选择安装
- 移动app的体验性测试
- Dear Menuhin
- Mac包管理神器Homebrew
- Jlink使用技巧之J-Scope虚拟示波器功能
- C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮
- maven私服内容补充
- Attention Is All You Need 一些好的资料
- PC/FORTH 判定
- Python: packer方式加密js代码之解密函数