Effective C++学习笔记(十六)
来源:互联网 发布:空间电压矢量 知乎 编辑:程序博客网 时间:2024/05/20 18:44
一旦程序员领悟了pass-by-value(传值)的效率牵连层面,往往变成十字军战士,一心一意根除pass-by-value带来的种种邪恶。在坚定追求pass-by-reference的纯度中,他们一定会犯下一个致命错误:开始传递一些references指向其实并不存在的对象,这可不是件好事。
考虑一个用以表现有理数的class,内含一个函数用来计算两个有理数的乘积:
class Rational{
public:
Rational (int numerator=0,
int denominator=1);
private:
int n,d;
friend const Rational operator* (const Rational & lhs,const Rational & rhs);
}
这个版本的operator* 系以by value方式返回其计算结果(一个对象),如果你完全不担心该对象的构造和析构成本,你其实明显逃避你的专业责任,若非必要,没有人会想要
为这样的对象付出太对代价,问题是需要付出任何代价吗?
如果改为reference,就不需要付出代价。但是记住,所谓reference只是一个名称,代表某个既有对象。任何时候看到一个reference声明式,你都应该立刻问自己,它的另外一个名称是什么?因为它一定是某物的另一个名称。
以上述operator* 为例,如果它返回一个reference,后者一定指向既有的Rational对象,内含两个Rational对象的乘积。
0 0
- Effective C++学习笔记(十六)
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- c语言学习笔记十六
- 《Effective C++》学习笔记(1)
- 《Effective C++》学习笔记(一)
- 《Effective C++》学习笔记(二)
- 《Effective C++》学习笔记(三)
- 《Effective C++》学习笔记(四)
- 《Effective C++》学习笔记(五)
- 《Effective C++》学习笔记(六)
- 《Effective C++》学习笔记(七)
- 《Effective C++》学习笔记(八)
- Effective Objective-C 学习笔记(一)
- 《effective c++》学习笔记(一)
- 《effective c++》学习笔记(二)
- linux网络配置文件(IMOOC笔记)
- Android控件的基本属性
- poj 3111 K Best(二分)
- c++二进制文件的读写操作
- EngineerCMS核心代码
- Effective C++学习笔记(十六)
- 神经网络的前向传播和误差反向传播(NN,RNN,LSTM)(二)
- GEF教程及demo源码
- leetcode解题报告:62. Unique Paths
- Spark简介
- 每周一本读书笔记:《这么慢,那么美》
- 1.2.2Netty 客户端/服务器 总览
- matlab虚拟现实之V-Realm Builder2建模第二部分
- HDU 1242 Rescue(BFS+优先队列)