История изменений
Исправление xaizek, (текущая версия) :
Совсем UB. a->b
=== (*a).b
=== «разыменование нулевого указателя» === UB. Это работает для не виртуальных методов (пока они не станутвиртуальные... ну а потом выстрелит, когда-нибудь), и применяется нехорошими людьми сознательно, но это UB. Компилятор имеет право соптимизировать явный вызов метода на нулевом указателе скажем в std::terminate()
и будет прав, по стандарту (лень снова искать те цитаты).
Исходная версия xaizek, :
Совсем UB. a->b
=== (*a).b
=== «разыменование нулевого указателя» === UB. Это работает для не виртуальных методов (пока они не станутвиртуальные... ну а потом выстрелит, когда-нибудь), и применяется нехорошими людьми сознательно, но это UB.