|
|
1
19
该标准不保证具有相同内容的字符串文本的地址将是相同的。事实上, [lex.string]/16
因此,在字符串文本重复时使用相同的字符数组对象是可选的编译器优化。在安装了g++和默认编译器标志之后,我还发现在同一个翻译单元中,两个相同的字符串文字的地址是相同的。但正如您所猜测的,如果相同的字符串文本内容出现在不同的翻译单元中,我会得到不同的文本。
你可能会发现
此外,有关重用或重叠字符串文字对象的规则仅适用于与文字直接关联的未命名数组对象,如果文字立即衰减为指针或绑定到对数组的引用时使用。还可以使用文本初始化命名数组,如中所示
这里是数组对象
|
|
|
2
20
两个内容完全相同的字符串文字是否是完全相同的对象,这是未指明的,在我看来最好不要依赖。引用标准:
|
|
3
5
不,C++标准没有这样的保证。
也就是说,如果代码在同一个翻译单元中,那么就很难找到反例。如果
这个
|
|
|
4
3
C++标准不需要实现对字符串字符串的反复制。
当字符串文本驻留在另一个翻译单元或另一个需要链接器的共享库中时(
|