我遇到了一个问题,我不知道为什么会这样。
假设有一个功能
vector<std::string> split(const std::string &s, char delim) {}
如果你把它简单地称为vector<string>s = split("pam.pam", '.');,那么一切都会好起来的,代码也能正常工作。但是,如果从 arguments 中删除关键字const,程序将无法编译。这是为什么?
我遇到了一个问题,我不知道为什么会这样。
假设有一个功能
vector<std::string> split(const std::string &s, char delim) {}
如果你把它简单地称为vector<string>s = split("pam.pam", '.');,那么一切都会好起来的,代码也能正常工作。但是,如果从 arguments 中删除关键字const,程序将无法编译。这是为什么?
作为对您的响应,
"pam.pam"编译器会创建一个临时对象类型std::string。如果这些引用是 ,则左值引用只能绑定到临时对象const。一直如此。这里的问题是为什么你突然需要删除它
const。如果你想s在你的函数中修改并且仍然认为用户提供的参数值将被修改/损坏/破坏“不言而喻”,你可以提供重载另一方面,如果您希望不破坏参数的值,同时在不需要时不产生复制成本,那么最简单的方法是
这两个选项都可以让你做