【发布时间】:2020-12-26 15:38:38
【问题描述】:
这两种说法有什么区别?
C *c1 = new C;
C *c2 = new C();
情况解释here(Michael Burr的回答):
new C- 默认初始化 C,它调用默认 ctor。new C()- 值初始化 C,调用默认 ctor。
我不明白其中的区别。术语“默认初始化”和“值初始化”是什么意思?可以举个例子吗?
【问题讨论】:
-
好的,但是正如 Michael 在源问题中所言,default-initializes 和 value-initializes 有什么区别?
-
@Daros911 如果
C是类/结构类型,则两种语法都调用其默认构造函数。但是如果C是基本类型,比如int,那么new int将不指定int的值,但new int()会将int的值初始化为0。这就是区别 -
@RemyLebeau 如果类/结构有一个普通的构造函数,它也会被未初始化。
标签: c++ initialization