【发布时间】:2014-02-05 21:08:13
【问题描述】:
在 QT 中,我遵循在头文件中编写接口的方式,然后在 .cpp 文件中实现。就我而言,我有一个 MainApplication 和两个对话框作为 MainApplication 的子项
所以在 MainApplication Header 中,两个未初始化的指针指向两个 Dialogs
MemberForm *memberForm;
AboutForm *aboutUsForm;
据我所知,指针将为 Null,并且以下条件的计算结果为 true
memberForm == NULL //False
aboutUsForm == NULL //False
据我所知,所有未初始化的指针都是 NULL 指针,所以这对我来说很奇怪。是什么让删除标头中的一个指针更奇怪的是,条件评估为真
MemberForm *memberForm;
//AboutForm *aboutUsForm; // Removing the pointer
条件评估为真
memberForm == NULL //True
感谢任何回复。 PS:如果你要对帖子投反对票,请留下评论解释原因..
【问题讨论】:
-
你的第二个测试只是“运气”,那些成员不会被初始化,你需要自己做。
-
在 C++ 中,指针在没有显式赋值的情况下不会初始化为 NULL/nullptr。默认值是未定义的,在大多数情况下将指向未初始化的内存。在某些设置中,例如使用 MSVC 进行调试构建,编译器可能碰巧决定将值初始化为 null,但这根本不是您可以依赖的 - 它已经在发布构建中中断。跨度>
-
@Mat 是的,我是个幸运的男孩 :D 看来我必须学习更多..