在《Effective C++》里提到对内置(C-like)类型在函数传参时pass by value比pass by reference更高效,当用OO的c++自定义类型(存在构造/析构等)pass by reference to const 更好,STL里的迭代器和函数对象是用C指针实现的,因此pass by value更好。至于为什么,下面的代码验证了下。
|
用VS 2012 默认Debug配置下生成的汇编代码如下:
|
后面的几个函数,只截取了关键代码了。
|
|
指针跟上面引用一样。
|
从汇编代码可以看出,为啥内置类型作为函数参数传递时更高效。