[英]Should the objects initialized and stored in another class be dynamically/statically allocated?
[英]Are dynamically allocated objects default initialized?
在C ++ Primer 5th(第12章)中,
默认情况下,默认初始化动态分配的对象,这意味着内置或复合类型的对象具有未定义的值;
int *pi = new int; // unitialized int
此语句指示内置类型对象在默认初始化时具有未定义的值。 但是, 默认初始化内置类型对象的行为取决于它的定义位置 。
具体而言,任何函数外的内置类型对象都应为0
,而某些块内的内置类型对象具有未定义的值。
因此,我认为上面的陈述不准确,因为对于内置类型:
默认初始化!=未定义的值
我理解这个吗?
对于非类类型,默认初始化不执行初始化。
但是,在进行任何其他初始化之前,具有静态或线程存储持续时间的变量始终为零初始化。 所以如果你有int x;
在全局范围内,尽管默认初始化不执行任何操作,但由于在默认初始化之前进行的零初始化, x
仍然初始化为零。
对于具有动态存储持续时间的非类对象,如果未给出初始化程序,则该值是不确定的,因为零初始化不适用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.