Effective C++ 条款20 宁以pass-by-reference-to-const替换pass-by-value
1. 以reference-to-const传递参数的优点:
避免局部对象的构造和析构,节省时间和空间;
避免参数派生类对象向基类对象传递时的"对象切割",实现面向对象;
2. reference虽然是"别名",但是底层实现往往是指针,因此对于内置类型,选用pass-by-value效率更高.这也适用于STL的迭代器和函数对象,因为它们习惯上都被设计为pass-by-value,但并不是对象小就要选择pass-by-value效率就高,主要有以下原因:
对象内含指向堆内存的指针;
某些编译器会把内置类型放入缓存器,但是却不会把只含一个内置类型的对象放入缓存器(对象的引用属于内置类型);
用户自定义类型其内部实现可能改变(对象可能变大)
3. 综上,使用pass-by-value传参比较合适的对象一般只有内置类型,STL的迭代器和函数对象,其他最好用pass-b0reference-to-const替换pass-by-value