将参数传递为std :: string或const std :: string&?

Vit*_*meo 1 c++ string arguments reference pass-by-reference

可能重复:
在C++中通过值传递或通过常量引用传递是否更好?

在编写文件系统时我想到了这一点.

vector<string> getFiles(string path);
vector<string> getFiles(const string& path);
Run Code Online (Sandbox Code Playgroud)

什么更快?什么更优雅?

显然path永远不会改变getFiles方法.

额外奖励:我正在使用C++ 11.有没有办法移动语义会加速一切?

Alo*_*ave 5

黄金法则:

"默认情况下始终通过const引用."

传递函数参数时,这应该是您的默认选择.您根据情况需求选择了其他选项.

  • 对于自定义类,它总是更有效.
  • 对用户来说更直观.

  • [不是每个人都同意你的意见](http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/) (2认同)