我阅读了以下链接:-
我有一个要澄清的问题。
1)给定POD类别,请说:-
class A{
int val;
};
如果我创建一个A类型的对象。
一个obj; //这会调用编译器提供的隐式定义的构造函数吗?
现在据我所知在这种情况下没有调用构造函数,对吗?
新的A(); //值初始化A,由于它是一个POD,因此为零初始化。现在在这种情况下将隐式定义编译器提供的构造函数吗?零初始化对象有构造函数的作用吗?
如果我的理解是错误的,请给我一个例子,其中根本不调用隐式定义的构造函数。
先感谢您。
1)正确。obj.val
未初始化。
2)这是一个函数声明,而不是初始化:
A obj(); // function obj() returning an A
如果这样做的话
A obj{}; //C++11
A obj = A(); // C++03 and C++11
obj
将被值初始化,也会被初始化obj.val
。反过来,这意味着obj.val
将对其进行零初始化(值初始化是针对内置类型的零初始化)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句