const定义疑惑

时间:2011-08-12 11:11:52

标签: c++

将某些内容定义为

是否有任何区别
const string msg=_T("serious");
const string& msg=_T("serious");

string const msg=_T("serious");
string const&msg=_T("serious");

谢谢

2 个答案:

答案 0 :(得分:2)

无差异两者都相同。这是不同的说法。

答案 1 :(得分:0)

const stringstring const之间没有区别。

const string msg在本地范围内创建msg个对象。这就是你应该做的。

const string& msg创建一个用临时对象初始化的引用。这里,临时对象的生命周期延长,直到msg超出范围,所以没关系,但在其他表达式中,它可能是错误或未定义的行为。如果删除const,则定义将不再有效。你不应该使用它。

此处不需要_T(),因为string在Unicode版本中不会变成wstring。