Nao*_*aor 1 c c++ string-literals
如果我调用像myObj.setType("fluid")这样的函数; 在一个程序中,很多次,文字"流体"的副本被保存在内存中?编译器是否可以识别此文字已经定义并再次引用它?
Ara*_*raK 15
这与C++(语言)无关.相反,它是编译器可以执行的"优化".所以,答案是和否,取决于您使用的编译器/平台.
@David这是来自该语言的最新草稿:
§2.14.6(第28页) 是否所有字符串文字都是不同的(即存储在非重叠对象中)是 实现定义的.尝试修改字符串文字的效果是未定义的.
§2.14.6(第28页)
是否所有字符串文字都是不同的(即存储在非重叠对象中)是 实现定义的.尝试修改字符串文字的效果是未定义的.
重点是我的.
换句话说,C++中的字符串文字是不可变的,因为修改字符串文字是未定义的行为.因此,编译器是免费的,以消除冗余副本.
顺便说一下,我只谈论C++;)
Stu*_*Stu 6
是的,它可以.当然,这取决于编译器.对于VC++,它甚至可以配置:
http://msdn.microsoft.com/en-us/library/s0s0asdt(VS.80).aspx
归档时间:
16 年,2 月 前
查看次数:
696 次
最近记录: