我不理解值初始化的效果和要求,因为它们似乎令人费解。它从CppReference网站上说明了以下内容:
1)如果T是没有默认构造函数的类类型,或者是用户提供或删除的默认构造函数,则该对象是默认初始化的;
因此,如果T是类类型(类,结构)并且具有:
A::A(int)
因此没有默认值)A::A()
)A::A() = delete;
)然后对象默认初始化。
这是不是定义了一个类可以有效地说明一个类总是默认初始化(当使用值初始化语法,空大括号时)的每个场景,除非它有隐式默认值构造函数/默认?
实质上,以下陈述是正确的:
这些条件失败的唯一方法是默认构造函数是隐式的还是C ++ 11默认的,在这种情况下它是零初始化的。
来源:http://en.cppreference.com/w/cpp/language/value_initialization