1
4
自C++11以来,对初始化进行了许多修复。例如,最初无法使用列表初始化复制构造聚合(
CWG 1467
). 这个非常小的修复以一种不受欢迎的方式破坏了一些代码,从而导致了一个新问题,即如果存在
最好的解决方案就是了解初始化的陷阱,并小心您正在做的事情。我的经验法则是
请注意,这与以下更广为人知的陷阱并没有什么不同:
您有与之前相同的问题,原因相同:
即使你要求前者(这是不可能的),你也不能使后者格式错误。 |
2
-7
首先是一个统一的初始值设定项,它被引入到 解决 语言的歧义。问题被称为 最烦人的解析 关于声明变量,用“round”()括号初始化。MVP是代码中的一种歧义解决方法,类似于以下内容:
虽然这两条线的工作方式不同:
他们 做 语义相同,它们是变量的声明。这种工作方式(以及您可以声明以初始值设定项列表为参数的构造函数)在C++语言中具有很大的意义,因为C++语言采用了隐藏语法背后的真实值和操作量的概念。
这不是矛盾,至少不是主要矛盾。
当然
因为在声明中只能有一个初始值设定项,所以创建的字符串容器的设置值看起来是这样的:
虽然我可能很懒惰,并且忽略了最里面的大括号,但语法are-the-syntax-sugar允许我显示其中是initializer\u列表。 |
KiraHoneybee · 具有构造函数参数的模板化类 2 年前 |
nick2225 · 隐式调用复制构造函数? 2 年前 |
nohaga · 为什么在本例中p3需要默认构造函数? 2 年前 |
Aadil Hoda · 为什么类类型的成员需要初始化? 2 年前 |
EloiGG · 具有任意类型的变量的可数的C++函数 2 年前 |