【发布时间】:2019-06-27 00:31:56
【问题描述】:
我发现很多文章解释了“默认初始化和值初始化”之间的区别,但实际上我并没有理解清楚。
这是一个例子:
class A{
public:
int x;
};
int main(){
A a;// default initialization so x has undefined value.
A b = A(); // value initialization so x is a scalar thus it is value initialized to 0
}
上面我猜是可以的,但是在这里:
int value = 4; // is this considered a value-initialization?
请帮助我理解这两种初始化形式的主要区别。
【问题讨论】:
-
Looks like Copy Initialization 这是another link,它(大致)涵盖了您可能遇到的所有不同类型的初始化
-
A a;没有默认初始化。我以为A a1{};默认初始化,A a2{1};值初始化,A a3{a2};复制初始化,虽然上面的链接指出A a1{};是值初始化,所以也许我错了。 -
@Tas 是的,你错了。
A a1{};是值初始化,A a2{1};和A a3{a2};是直接初始化。
标签: c++ initialization value-initialization default-initialization