Некоторое приложение для получения команды beep (shell), так как MIDI-файл

Имеет ли смысл проверить это == null? Я нашел это при выполнении обзора кода.

В стандартном C ++ это не так, поскольку любой вызов нулевого указателя уже является неопределенным поведением, поэтому любой код, основанный на таких проверках,

Обратите внимание, что это верно и для не виртуальных функций.

Некоторые реализации позволяют this==0, однако, и, следовательно, библиотеки, написанные специально для этих реализаций, иногда будут использовать его в качестве взлома. Хорошим примером такой пары является VC ++ и MFC - я не помню точный код, но я отчетливо помню, как где-то смотрел if (this == NULL) проверки в исходном коде MFC.

Он также может быть как поскольку в какой-то момент в прошлом этот код был поражен this==0 из-за ошибки в вызывающем абоненте, поэтому была вставлена ​​проверка, чтобы поймать будущие экземпляры этого кода. Утверждение будет иметь больше смысла для таких вещей.

Если это == null, это означает, что объект удален.

Нет, это doesn Это значит. Это означает, что метод был вызван нулевым указателем или ссылкой, полученной от нулевого указателя (хотя получение такой ссылки уже является U.B.). Это не имеет ничего общего с delete и не требует, чтобы какие-либо объекты этого типа когда-либо существовали.

0
задан Francisco Pinto Santos 1 March 2019 в 07:29
поделиться