初探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);
};

最新文章

  1. 关于访问链接返回XML的获取数据
  2. C#之不借助第三变量交换两变量值
  3. 爬虫技术 -- 进阶学习(七)简单爬虫抓取示例(附c#代码)
  4. 10.Android之ProgressDialog进度对话框学习
  5. python_way ,day5 模块,模块3 ,双层装饰器,字符串格式化,生成器,递归,模块倒入,第三方模块倒入,序列化反序列化,日志处理
  6. 初识vi编辑器
  7. Jquery 插件初学习
  8. Python协程深入理解
  9. Winform应用程序实现通用遮罩层二
  10. React 系列教程2:编写兰顿蚂蚁演示程序
  11. VS2017安装过程中【工作负载】选择安装
  12. 移动app的体验性测试
  13. Dear Menuhin
  14. Mac包管理神器Homebrew
  15. Jlink使用技巧之J-Scope虚拟示波器功能
  16. C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮
  17. maven私服内容补充
  18. Attention Is All You Need 一些好的资料
  19. PC/FORTH 判定
  20. Python: packer方式加密js代码之解密函数

热门文章

  1. 设置bootstrap modal模态框的宽度和宽度
  2. 10.4 缓冲流 BufferedReader &amp; BufferedWriter &amp; 缓冲流特殊功能readLine
  3. 梦想CAD控件 2019.01.20更新
  4. 脚手架工具搭建VUE应用
  5. 浅谈:nodejs在cmd提示不是内部或外部命令
  6. 11Oracle Database 视图
  7. c++函数进阶
  8. P1036 选数(DFS)
  9. &lt;MySQL&gt;入门六 变量
  10. .NET-高并发及限流方案