【发布时间】:2015-04-27 22:22:23
【问题描述】:
我对教科书中的一个例子有点困惑。创建字符串时,它被创建为类型string。但是,当将相同的字符串传递给函数时,函数参数是const string,而不是string。
以下是部分代码:
int main()
{
string str;
cout << "blah blah..";
getline(cin, str);
if (is_pal(str))
//...
}
bool is_pal(const string& s)
{
//...
}
为什么函数参数是const string& s 而不仅仅是string& s?我已经阅读了我的教科书,但似乎找不到任何解释。
【问题讨论】:
-
也许字符串可以改变,但函数应该不能?
-
字符串被传递到几个函数中,其中一些函数确实会改变字符串,例如删除标点符号,将其更改为小写等。
-
但是它们是改变了字符串的原始值(即通过内存地址引用它)还是只获取传递的参数并返回它的副本?
-
这只是表明名为
is_pal的特定函数不会修改其参数。阅读我在 C++ 中对const的解释:*.com/a/3709257/103167 -
我正在搜索副本,但失败了。但是,我发现了一个问题和很好的答案,您可能会发现它们与主题很接近并且很有趣:*.com/questions/3967177/…