Имеет ли смысл проверить это == null? Я нашел это при выполнении обзора кода.
blockquote>В стандартном C ++ это не так, поскольку любой вызов нулевого указателя уже является неопределенным поведением, поэтому любой код, основанный на таких проверках,
Обратите внимание, что это верно и для не виртуальных функций.
Некоторые реализации позволяют
this==0
, однако, и, следовательно, библиотеки, написанные специально для этих реализаций, иногда будут использовать его в качестве взлома. Хорошим примером такой пары является VC ++ и MFC - я не помню точный код, но я отчетливо помню, как где-то смотрелif (this == NULL)
проверки в исходном коде MFC.Он также может быть как поскольку в какой-то момент в прошлом этот код был поражен
this==0
из-за ошибки в вызывающем абоненте, поэтому была вставлена проверка, чтобы поймать будущие экземпляры этого кода. Утверждение будет иметь больше смысла для таких вещей.Если это == null, это означает, что объект удален.
blockquote>Нет, это doesn Это значит. Это означает, что метод был вызван нулевым указателем или ссылкой, полученной от нулевого указателя (хотя получение такой ссылки уже является U.B.). Это не имеет ничего общего с
delete
и не требует, чтобы какие-либо объекты этого типа когда-либо существовали.