ofe*_*fey 6 c++ string parameters reference
如果我不打算修改字符串,那么第一个选项更好或者两者都相同 -(我只想迭代字符串,但由于字符串大小很大,我不希望进行本地复制.)
int getString(string& str1) {
//code
}
int getString (string str1) {
//code
}
Run Code Online (Sandbox Code Playgroud)
如果我打算改变字符串,那两者之间有什么区别吗?是因为字符串在C++中是不可变的吗?
Luc*_*ore 11
字符串文字是不可变的,std::strings不是.
第一个是传递参考.如果您不打算修改字符串,请通过const引用传递它.
第二个是按值传递 - 如果你修改了函数内部的字符串,你只需修改一个副本,所以这没有实际意义.
小智 9
为什么不通过const引用?这样既不会复制,也不会被调用的函数能够修改字符串.
int getString(string const &str1)
{
}
Run Code Online (Sandbox Code Playgroud)