(小结)pass-by-reference-to-const替换pass-by-value
2011-08-03 17:52
841 查看
在effective c++中条款20说到,要以常量引用的方式替代传值传参。
主要是三个原因:
传值可能造成slicing(对象切割)的问题。
传值可能浪费了一大堆内存构造新的对象。
对象的传值还要调用copy构造函数(如果设计的好就没了),都是开销啊。
书中的建议:内置类型以及STL迭代器和函数对象,用传值比较合适,其他的用const type&比较高效~
引用实际上是传了个指针进去,所以用常量引用的方式实际是做了两件事,取地址,copy地址,所以它最多也就是用4字节(一般情况)空间,如果你的对象大小
超过4字节我觉得都可以考虑用常量引用的方式传值。内置的类型也有大于4字节的?也用常量引用吗?这点我觉得还是用传值,因为我觉得汇编指令对它们是挺照顾的~
主要是三个原因:
传值可能造成slicing(对象切割)的问题。
传值可能浪费了一大堆内存构造新的对象。
对象的传值还要调用copy构造函数(如果设计的好就没了),都是开销啊。
书中的建议:内置类型以及STL迭代器和函数对象,用传值比较合适,其他的用const type&比较高效~
引用实际上是传了个指针进去,所以用常量引用的方式实际是做了两件事,取地址,copy地址,所以它最多也就是用4字节(一般情况)空间,如果你的对象大小
超过4字节我觉得都可以考虑用常量引用的方式传值。内置的类型也有大于4字节的?也用常量引用吗?这点我觉得还是用传值,因为我觉得汇编指令对它们是挺照顾的~
相关文章推荐
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- C++之宁以pass-by-reference-to-const替换pass-by-value(20)---《Effecitive C++》
- 读书笔记_Effective_C++_条款二十:宁以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
- 尽量用pass-by-reference-to-const(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
- 读书笔记《Effective C++》条款20:宁以pass-by-reference-to-const替换pass-by-value
- [Effective C++ --020]宁以pass-by-reference-to-const替换pass-by-value
- 尽量用pass-by-reference-to-const(const引用)替换pass-by-value(传值)
- 【20】宁以pass-by-reference-to-const替换pass-by-value
- Effective C++ Item 20 宁以pass-by-reference-to-const替换pass-by-value
- 读书笔记《Effective c++》 条款20 宁以pass-by-reference-toconst替换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