(小结)pass-by-reference-to-const替换pass-by-value

在effective c++中条款20说到,要以常量引用的方式替代传值传参。

主要是三个原因:

传值可能造成slicing(对象切割)的问题。

传值可能浪费了一大堆内存构造新的对象。

对象的传值还要调用copy构造函数(如果设计的好就没了),都是开销啊。

书中的建议:内置类型以及STL迭代器和函数对象,用传值比较合适,其他的用const type&比较高效~

引用实际上是传了个指针进去,所以用常量引用的方式实际是做了两件事,取地址,copy地址,所以它最多也就是用4字节(一般情况)空间,如果你的对象大小

超过4字节我觉得都可以考虑用常量引用的方式传值。内置的类型也有大于4字节的?也用常量引用吗?这点我觉得还是用传值,因为我觉得汇编指令对它们是挺照顾的~

你可能感兴趣的:((小结)pass-by-reference-to-const替换pass-by-value)