【发布时间】:2016-10-06 10:49:24
【问题描述】:
我有以下代码:
const string getConstString()
{
return "MyConstString";
}
int main()
{
string str1 = getConstString();
cout << str1 << endl;
}
const关键字在这里有什么作用?
【问题讨论】:
-
重新复制,James Kanze 那里接受的答案不正确。
-
是的,是的,为函数定义添加前缀意味着返回的对象将是 const。这意味着,如果你想存储它,你必须将它存储在一个 const 对象中。
-
void main在 C 和 C++ 中始终无效。请不要使用void main发布代码,因为它会误导初学者,并且通过直接复制和粘贴来测试您的代码更加困难。 FTFY。 -
抱歉,正如我所写,詹姆斯的回答不不正确。它只是旧的,因此不完整。
-
双重抱歉。 C++11 §3.10/4 “类纯右值可以有 cv 限定类型;非类纯右值总是有 cv 非限定类型”意味着 James 声称“忽略非类类型的返回类型的顶级 cv 限定符“ 是不正确的。我投了反对票并添加了解释。我已经在这里更新了我的答案,其中包含如何不忽略限定符的标准+示例。
标签: c++