我是C ++的新手,没有找到答案,因为搜索结果始终是关于函数签名的,而不是这个。
基本上,如果我有一个功能:
std::string MyFunction(const int test) const
{
const std::string str1 = "Hello";
const std::string str2 = "World";
return test > 7 ? str1 : str2;
}
返回值为str1
或str2
。这会给呼叫者造成麻烦吗?
答案 0 :(得分:3)
返回值为
str1
或str2
。这会给呼叫者造成麻烦吗?
不,不会。返回的对象是其中之一的副本。
顺便说一句,在大多数情况下,在参数类型中使用const
是没有意义的。是否修改函数中参数的值不会影响调用函数。除非您有充分的理由证明使用const
合理,否则我建议使用不使用const
的简单表单。
const
答案 1 :(得分:3)
您返回的类型是std::string
,而不是const std::string
。调用者不必理会局部变量的类型(调用者甚至可能无法访问函数的定义/主体/实现!)。
通常,函数主体中的局部变量的类型不能更改函数本身的返回类型(auto
和lambda除外)。