侯捷-C++面向对象高级开发(操作符重载与临时对象)
1.操作符重载与临时对象
任何成员函数有一个隐藏的this pointer指向,指向调用者。
传递者无需知道接收者是以什么形式接收
就比如下面方框内c1以value方式传递,接收者以引用方式接收
如果下面方框的操作那么成员函数的inline写成void也没问题,但是如果是右边方框的内容就不行
complex::function...//这种是成员函数
function... //这种是全局函数
全局函数与成员函数的区别在于后者有this pointer
操作之后的结果存下来之后会释放
注:typename()就是要创建临时对象
右边方框中前两行黄色的执行到空的那行就不见了
这里不能返回引用
操作符有两种写法一种是成员函数写法一种是非成员函数的写法
由于要支持连串的输出所以返回的要用引用而不能void
总结写一个类的注意事项:
- 会用构造函数的initialization list
- 函数要不要加const
- 参数传递尽量用引用,还要考虑要不要加const
- return 的时候by value还是by reference
- 数据放在private,函数放在public