Заголовок файла С++ и объявление функции, заканчивающееся на "= 0",

У меня есть следующий код внутри файла .h, и я не уверен, что делает оператор присваивания и как он называется правильно?

virtual void yield() = 0;

Я думал, что функция возвращает значение 0 по умолчанию, но поскольку эта функция возвращает void, я немного запутался. Может кто-нибудь прокомментировать это и, может быть, сказать, как я могу ссылаться на это задание, я имею в виду, как он называется на языке С++?

Спасибо.

Ответы

Ответ 1

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

class ISomeInterface {
public:
    virtual std::string ToString( ) = 0;
}

class SomeInterfaceImpl : public ISomeInterface {
public:
    virtual std::string ToString( ) {
        return "SomeInterfaceImpl";
    }
}

Идея состоит в том, что класс может выставить определенный метод, но подклассы должны его реализовать. В этом примере ISomeInterface предоставляет метод ToString, но для него нет разумной реализации по умолчанию, поэтому он делает метод чистым виртуальным. Подклассы типа SomeInterfaceImpl могут затем обеспечить подходящую реализацию.

Ответ 2

Синтаксис = 0 объявляет чистую виртуальную функцию она не имеет ничего общего с возвращаемым значением.

Если класс содержит хотя бы одну чистую виртуальную функцию, это делает класс "абстрактным" , что означает, что он не может быть создан.

На практике такие классы необходимо конкретизировать путем подклассификации и реализации виртуальных функций.

Ответ 3

Если это чистый виртуальный метод (ака абстрактный), посмотрите здесь или google http://www.artima.com/cppsource/pure_virtual.html

= 0 не означает значения возврата по умолчанию, это уведомление о том, что функция является чистой виртуальной

Ответ 4

Синтаксис неясен, но "= 0" означает, что этот метод является чистой виртуальной функцией. Это делает класс абстрактным (вы не можете его создать), и его реализация передается производным классам.

Это используется, когда все, что вы хотите определить, - это интерфейс. Используйте ключевое слово virtual, если вы хотите определить интерфейс, а также предоставить реализацию по умолчанию.