【发布时间】:2020-04-04 17:41:25
【问题描述】:
在std::filesystem c++17 库文档中,有多个函数的输入实例是 const 并且还使用它的引用。
void demo_exists(const fs::path& p, fs::file_status s = fs::file_status{});
const 和 & 肯定是矛盾的。我的理解是,const 用于您不希望修改变量时使用,& 用于在函数内改变多个参数而不必在之后将它们作为数组返回。
肯定同时使用const 和& 是矛盾的和令人困惑的,或者是否有理由同时使用它们?
提前致谢
来自文档https://en.cppreference.com/w/cpp/filesystem/exists的原始示例
【问题讨论】:
-
不,它们并不矛盾。引用还可以使代码更高效,因为不必复制参数。
-
使用
const fs::path& p声明p是对常量fs::path对象的引用。const表示您不能修改p,引用表示您不必复制整个对象。这种对常量对象的引用也可以用于绑定到rvalues,这意味着您可以使用字符串而不是实际的path对象来调用这个函数(即demo_exists("/some/path")是有效的)。
标签: c++ function functional-programming c++17