初始化字符串时额外的花括号

2024-04-23

根据问题string array[] = ""; 是什么意思?是什么意思以及为什么它有效? https://stackoverflow.com/questions/21481462/what-does-this-code-mean-and-why-does-it-work我想问一下有什么区别s1 and s2在下面的代码中:

int main() {
    const char* s1 = { "Hello" }; // strange but work as followed
    const char* s2 = "Hello"; // ordinary case 
    return 0;
}

为什么允许额外的花括号?任何对 C++ 标准的引用都会有用。


在 C++98(和 C++03)中,这非常简单;第 8.5 条:

14 - If T是标量类型,然后是以下形式的声明T x = { a };相当于T x = a;

在 C++11 中,列表初始化 (8.5.4p3) 涵盖了这一点:

[...] 如果初始值设定项列表具有类型 E 的单个元素并且 T 不是引用类型或 它的引用类型与 E 引用相关,对象或引用从该元素初始化 [...]

I think这是同样的问题用大括号初始化标量 https://stackoverflow.com/questions/14232184/initializing-scalars-with-braces?lq=1.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初始化字符串时额外的花括号 的相关文章

随机推荐