Заголовок файла С++ и объявление функции, заканчивающееся на "= 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, если вы хотите определить интерфейс, а также предоставить реализацию по умолчанию.