如果我有一个
class A
{
private:
Widget* widgets[5];
};
是否可以确保所有指针均为NULL,还是需要在构造函数中对其进行初始化?所有编译器都正确吗?
谢谢。
最佳答案
这取决于平台以及如何分配或声明A
实例。如果它在堆栈或堆上,则需要显式初始化它。如果使用new放置,并且使用自定义分配器将内存初始化为零,或者您在文件范围内声明实例,并且平台的空指针常量按位为零,则不会。否则,您应该。
编辑:我想我应该已经说出明显的是“不要以为这发生了”。
尽管实际上答案是“取决于平台”。该标准仅告诉您在显式初始化或在文件范围内初始化时会发生什么。否则,最容易假设您所处的环境与您要执行的操作完全相反。
并且,如果您真的需要了解(出于教育或优化目的),请查阅文档并弄清楚该平台可以依靠什么。