我对我教科书中的一个例子感到有点困惑.创建字符串时,会将其创建为类型字符串.但是,当相同的字符串传递给函数时,函数参数是const字符串而不是字符串.
这是代码的一部分:
int main()
{
string str;
cout << "blah blah..";
getline(cin, str);
if (is_pal(str))
.
.
.
}
bool is_pal(const string& s)
{
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
为什么函数参数const string&s而不仅仅是string&s?我翻过教科书,但似乎无法找到任何解释= /谢谢.
复制可能很昂贵的对象,例如std::string,经常通过C++中的const左值引用传递.这是一个非常普遍的习语; 你会到处看到它.const lvalue引用可以绑定到lvalues和rvalues而不进行任何复制,因此这是将字符串传递给不会修改它们的函数的有效方法.