问题标签 [value-initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
57 浏览

c++ - 对象的默认初始化、值初始化和类内初始化不正确?

你可能会觉得代码很长,我写了很多东西,但相信我,这很简单。

为了理解这一点,我在 stack-overflow 上引用了这两个答案。 后 1后 2

代码

输出

B类

b1是值初始化精确零初始化。

b2是默认初始化意味着没有初始化。

b3是大括号初始化意味着值初始化导致零初始化。

我无法创建b4()类似q4(不完全类似,但你知道我的意思),因为它引导函数定义而不是对象声明(最令人烦恼的解析)

我认为q1应该初始化值,但在看到输出后它与我的想法不符。

q2是默认初始化意味着没有初始化。

q3是大括号初始化意味着值初始化导致零初始化。

q4调用构造函数,但没有用户定义的构造函数,所以它应该默认初始化意味着没有初始化。

我知道q1, q2, q3,q4是指针,但为了简单起见,我将上述语言用于 ex。q3是大括号初始化的。但我想你知道我的意思。

我对b1,b2b3看法被证明是正确的,所以我对此没有任何疑问,这可能只是巧合,如果我错了,请纠正我。

关于q1, q2, q3,q4

我认为b1我认为它也应该适用,q1但它不会发生,所以请解释一下。

关于q2我认为匹配的内容,所以没问题,但如果我错了,请纠正我。

现在与q3&混淆了q4。我认为两者都在呼吁构造函数,但我不确定。我假设两者都调用构造函数,但我们没有用户定义的构造函数,所以它应该默认初始化意味着未初始化,不是吗?那么为什么两者都被精确地初始化为零初始化。

A级

因此,如果我们进行类内初始化,无论我们在哪里声明对象,它将使用我们提供的内容进行初始化,我觉得这是正确的,但只是想确认一下,如果您想告诉我更多关于这一点的信息,请添加。