【发布时间】:2012-12-27 02:09:51
【问题描述】:
可能重复:
Is it better in C++ to pass by value or pass by constant reference?
我在编写文件系统时考虑过这个问题。
vector<string> getFiles(string path);
vector<string> getFiles(const string& path);
哪个更快?哪个更优雅?
显然path 永远不会在getFiles 方法中更改。
奖励:我使用的是 C++11。有没有办法移动语义可以加快一切?
【问题讨论】:
-
只有当您需要将
path的值存储在某处以备后用时,移动语义重载才可能有用。 -
@LightnessRacesInOrbit 为什么这个问题作为 4 年前提出的问题的重复而被关闭?该问题的答案完全忽略了移动语义并引用了 Effective C++,它纯粹为 C++98 最佳实践提供了指导。如果是这样,Scott 为什么还要费心更新这本书及其对 C++11 的建议?
标签: c++ string reference arguments pass-by-reference