В QT я следую примеру написания интерфейса в файле заголовка, а затем реализации в файлах .cpp. В моем случае у меня есть один MainApplication и два диалогов детей MainApplicationНеинициализированные указатели в QT
так в MainApplication заголовке, два не-инициализируются указатели на два диалоги
MemberForm *memberForm;
AboutForm *aboutUsForm;
Насколько я знаю, что указатель будет быть Null и это следующие условия принимает значение истинного
memberForm == NULL //False
aboutUsForm == NULL //False
насколько я знаю, что все не инициализируются указатели NULL указатели, так что это странно для меня. что делает его более странно, что удаление одного из указателей в заголовке, условия оценивает истинную
MemberForm *memberForm;
//AboutForm *aboutUsForm; // Removing the pointer
условие оценивается верно
memberForm == NULL //True
Я ценю любой ответ. PS: Если вы собираетесь понизить рейтинг, пожалуйста, оставьте комментарий, объясняющий почему ..
Ваш второй тест - это просто «удача», эти члены не будут инициализированы, вам нужно сделать это самостоятельно. – Mat
В C++ указатели не инициализируются в NULL/nullptr без явного назначения. Значение по умолчанию не определено и в большинстве случаев укажет на неинициализированную память. В некоторых настройках, таких как отладочные сборки с MSVC, компилятор * может * решить, чтобы инициализировать значения с нулевым значением, но на этом вы не можете положиться вообще - он уже сломается в сборках релизов. –
@ Мать да, я счастливый мальчик: D и он выглядит, что мне нужно учиться больше .. –