Синтаксис для чисто виртуальной функции - только = 0
. Например, virtual void do_stuff() = 0
разрешено, но virtual void do_stuff() = nullptr
не разрешено.
Clang поддерживает __null
, но внутренний код компилятора не предназначен для объявления виртуальных функций.
Единственная причинато, что NULL
может работать для чисто виртуальных функций, заключается в том, что некоторая система определяет его как 0
, но вы не должны на это полагаться. Некоторые компиляторы могут также использовать 0LL
или (void*)0
.
Если вы можете, вы должны использовать nullptr
вместо NULL
для объявления нулевых указателей. Это лучшее решение, которое можно эмулировать в более старых стандартах.
Для объявления чисто виртуальных функций используйте = 0
. Это самый простой и обычный способ объявления чисто виртуальных функций.