【发布时间】:2020-12-13 08:06:16
【问题描述】:
这是c++入门的代码:
string::size_type findChar(const string &s, char c, string::size_type & occurs){
auto ret = s.size();
occurs = 0;
for (decltype(ret) i = 0; i != s.size(); ++i){
if (s[i] == c){
if (ret == s.size())
ret = i;
occurs++;
}
}
return ret;
}
int main () {
string::size_type ctr;
cout << findChar("hello, world!", 'o', ctr);
}
从const string &s 中删除const 后发生错误。
错误:无法将 'std::__cxx11::string&' {aka 'std::__cxx11::basic_string&'} 类型的非常量左值引用绑定到 'std::__cxx11::string' 类型的右值 {又名'std::__cxx11::basic_string'} cout
我想知道,在这种情况下,const 关键字会改变编译器的哪些行为?谢谢你帮助我。
【问题讨论】:
-
到底发生了什么错误?
-
删除
const意味着“这个值可以被操纵”,这可能是不允许的,具体取决于参数的提供方式。 -
@nathanpierson 我已将其添加到问题中。
-
你需要学习c++移动语义
标签: c++ literals string-literals