在QT中,我遵循在头文件中编写接口的方式,然后在.cpp文件中执行。在我来说,我有一个MainApplication和两个对话框作为MainApplicationQT中的非初始化指针
所以在MainApplication头的孩子,两个未初始化指针两个对话框
MemberForm *memberForm;
AboutForm *aboutUsForm;
据我知道指针会是null,并且此下列条件计算为真
memberForm == NULL //False
aboutUsForm == NULL //False
据我知道,所有非初始化的指针是NULL指针,所以这是奇怪我。是什么使得它更奇怪的是去除标头中的指针之一,条件判断为真
MemberForm *memberForm;
//AboutForm *aboutUsForm; // Removing the pointer
条件计算真正
memberForm == NULL //True
我明白任何回应。 PS:如果你想downvote帖子请留下评论解释为什么..
你的第二个测试只是“运气”,这些成员不会被初始化,你需要自己做。 – Mat
在C++中,没有明确的赋值,指针不会被初始化为NULL/nullptr。缺省值是未定义的,并且在大多数情况下将指向未初始化的内存。在某些设置中,如使用MSVC进行调试构建,编译器*可能会碰巧决定使用null初始化值,但这是您完全可以依赖的任何设置 - 它将在发布版本中断开。 –
@Mat是的,我是一个幸运的男孩:D 它看起来,我必须学习更多.. –