返回const变量-会引起问题吗?

时间:2018-10-10 20:34:57

标签: c++ const

我是C ++的新手,没有找到答案,因为搜索结果始终是关于函数签名的,而不是这个。

基本上,如果我有一个功能:

std::string MyFunction(const int test) const
{
    const std::string str1 = "Hello";
    const std::string str2 = "World";
    return test > 7 ? str1 : str2;
}

返回值为str1str2。这会给呼叫者造成麻烦吗?

2 个答案:

答案 0 :(得分:3)

  

返回值为str1str2。这会给呼叫者造成麻烦吗?

不,不会。返回的对象是其中之一的副本。

顺便说一句,在大多数情况下,在参数类型中使用const是没有意义的。是否修改函数中参数的值不会影响调用函数。除非您有充分的理由证明使用const合理,否则我建议使用不使用const的简单表单。

const

答案 1 :(得分:3)

您返回的类型是std::string,而不是const std::string。调用者不必理会局部变量的类型(调用者甚至可能无法访问函数的定义/主体/实现!)。

通常,函数主体中的局部变量的类型不能更改函数本身的返回类型(auto和lambda除外)。