条款20:宁以pass-by-reference-to-const替换pass-by-value
2009-11-09 14:09
501 查看
一、为什么不是pass-by-reference而是pass-by-reference-to-const
原先的pass-by-value函数接受了一个参数,进行的操作都是在副本上做的。因此调用者知道函数内绝不会对传入的实参做任何改变。所以这里要加上 const。
二、总结
1.尽量以pass-by-reference-to-const 代替pass-by-value。前者通常比较高效,并且避免且可问题(sliceing problem)。
2.以上规则并不适用于内置类型(对于内置类型,pass-by-value通常更搞笑),以及STL的迭代器和函数对象(习惯上他们都被设计为pass-by-value,另外我的理解是,对于内含指针的对象,在这一点上都应小心,需要考虑深复制和浅复制)。对他们而言,pass-by-value往往比较适当。
原先的pass-by-value函数接受了一个参数,进行的操作都是在副本上做的。因此调用者知道函数内绝不会对传入的实参做任何改变。所以这里要加上 const。
二、总结
1.尽量以pass-by-reference-to-const 代替pass-by-value。前者通常比较高效,并且避免且可问题(sliceing problem)。
2.以上规则并不适用于内置类型(对于内置类型,pass-by-value通常更搞笑),以及STL的迭代器和函数对象(习惯上他们都被设计为pass-by-value,另外我的理解是,对于内含指针的对象,在这一点上都应小心,需要考虑深复制和浅复制)。对他们而言,pass-by-value往往比较适当。
相关文章推荐
- Effective C++ 条款20 宁以pass-by-reference-to-const替换pass-by-value
- 读书笔记《Effective c++》 条款20 宁以pass-by-reference-toconst替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20 宁以pass-by-reference-to-const替换pass-by-value
- <<Effective c++>>读书笔记---条款20:宁以pass-by-reference-to-const替换pass-by-value
- Effective C++ -----条款20:宁以pass-by-reference-to-const替换pass-by-value Prefer pass-by-reference-to-const to pass-by-value
- Effective c++学习笔记条款20:宁以 pass-by-reference-to-const替换pass-by-value
- effective C++ 条款 20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以 pass-by-reference to const 替换 pass by value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value(Prefer pass-by-reference-to-const to pass-by-value)
- Effective C++读书笔记-----条款20:宁以pass-by-reference-to-const替换pass-by-value
- 《Effective C++》——条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- Effective C++条款20:宁以pass-by-reference-to-const替换pass-by-value
- 《Effect C++》学习------条款20 :宁以pass-by-reference-to-const替换pass-by-value