Любовь Яковлева
Любовь Яковлева

Чему равна виртуальная функция?

Здравствуйте, вопрос возник: чему равна виртуальная функция? нулю, то есть =0 или =NULL?
В проге пишу оба варианта - оба правильны.
1) virtual void fool() = 0; без ошибок
2) virtual void fool() = NULL; без ошибок
какой выбирать?? ? Язык - С++
Спасибо

Ольга Бурочкина
Ольга Бурочкина

В том же Visual C++ 2012 NULL определен как

#define NULL 0

Т. е. в итоге, после обработки исходного файла препроцессором, второй вариант превращается в первый.

Каноничный вариант объявления чисто виртуальной функции:

virtual void fool() = 0;

по сути и является правильным, т. к. в зависимости от реализации компилятора и библиотек, макроопределение NULL может быть определено по другому.

Попробуй создать пустой проект, добавь к нему файл .cpp с определением класса:

class Foo { virtual void foo() = NULL; };
int main() { }

без включения любых заголовочных файлов (без #include).
Он просто не будет компилироваться, т. к. компилятор в данном случае ничего не знает о NULL. Замени NULL на 0 и все заработает.

ДК
Ден Кочуев

первый вариант

Похожие вопросы
виртуальные принтеры
Чему равна облать определения степенной функции с иррациональным показателем?
Чему будет равно intval('start1')?
Абстрактные базовые классы с++ полиморфизм и виртуальные функции
Чем отличается перегрузки функции от виртуальной и дружественной? С++. Приведите примеры, если не сложно. Спасибо.
На основе класса shape (x0, y0 - координаты фигуры, area - виртуальная функция площади)
Чему равно наименьшее значение функции y=5sinx - 12cosx?
Чему равно..??
К чему приводит виртуальная симпатия? ;)
Постройте графики функций, определите чему равно значение аргумента при заданном значении функции: