如果我有一个

class A
{
private:
  Widget* widgets[5];
};


是否可以确保所有指针均为NULL,还是需要在构造函数中对其进行初始化?所有编译器都正确吗?

谢谢。

最佳答案

这取决于平台以及如何分配或声明A实例。如果它在堆栈或堆上,则需要显式初始化它。如果使用new放置,并且使用自定义分配器将内存初始化为零,或者您在文件范围内声明实例,并且平台的空指针常量按位为零,则不会。否则,您应该。

编辑:我想我应该已经说出明显的是“不要以为这发生了”。

尽管实际上答案是“取决于平台”。该标准仅告诉您在显式初始化或在文件范围内初始化时会发生什么。否则,最容易假设您所处的环境与您要执行的操作完全相反。

并且,如果您真的需要了解(出于教育或优化目的),请查阅文档并弄清楚该平台可以依靠什么。

09-11 20:52
查看更多