Подтвердить что ты не робот

Что означает "= 0;" делать при объявлении чистых виртуальных функций в С++?

Возможный дубликат:
Почему чистая виртуальная функция инициализируется 0?

Я знаю, что для объявления чистой виртуальной функции вам нужно использовать "= 0;" синтаксис, например:

class Foo  
{
protected:
    Foo();
    virtual int getValue() = 0;
};

Мой вопрос: что именно (во внутренней работе компилятора) делает "= 0;" синтаксис делать? Действительно ли он устанавливает, что указатель функции равен нулю? Является ли это не более чем выражением о намерениях, например "абстрактным" зарезервированным словом в Java и С#, и если да, почему бы не добавить зарезервированное слово, например "абстрактное" к языку, а не использовать такой тайный синтаксис?

4b9b3361

Ответ 1

Он объявляет "чистую виртуальную" функцию. Значение = 0 в основном похоже на другое "чистое" ключевое слово. Этот вопрос связан с вашим: Почему чистая виртуальная функция инициализируется 0?

Чистая виртуальная функция вообще не имеет тела и должна определяться любыми классами, которые наследуют ее: http://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-interface-classes/

Ответ 2

Это означает, что нет реализации по умолчанию. Любой производный класс должен реализовать его.

Ответ 3

Это заставляет вас определить его в дочернем классе.