У меня есть следующий код в.h файле, и я не уверен, что делает оператор присваивания и как это называют правильно?
virtual void yield() = 0;
Я думал, что функция возвращает значение 0 по умолчанию, но начиная с этой функции возвраты пусто я немного смущен. Кто-либо может прокомментировать это и возможно сказать, как я могу обратиться к этому присвоению, я имею в виду, как это называют на жаргоне C++?
Спасибо.
Это чистая виртуальная функция. Это означает, что подклассы должны реализовывать эту функцию, иначе они будут абстрактными, то есть вы не можете создавать объекты этого класса.
class ISomeInterface {
public:
virtual std::string ToString( ) = 0;
}
class SomeInterfaceImpl : public ISomeInterface {
public:
virtual std::string ToString( ) {
return "SomeInterfaceImpl";
}
}
Идея состоит в том, что класс может предоставлять определенный метод, но подклассы должны его реализовать. В этом примере ISomeInterface
предоставляет метод ToString
, но для него нет разумной реализации по умолчанию, поэтому он делает метод чисто виртуальным. Подклассы, подобные SomeInterfaceImpl
, могут затем предоставить подходящую реализацию.
Синтаксис = 0
объявляет чистую виртуальную функцию , ему нечего делать с возвращаемым значением.
Если класс содержит хотя бы одну чистую виртуальную функцию, это делает класс «абстрактным», что означает, что он не может быть создан.
На практике такие классы необходимо конкретизировать путем создания подклассов и реализации виртуальных функций.
если это чистый виртуальный метод (также известный как абстрактный), посмотрите здесь или в Google http://www.artima.com/cppsource/pure_virtual.html
= 0 не означает возвращаемое значение по умолчанию, это уведомление о том, что функция является чисто виртуальной
Синтаксис неясен, но "=0" означает, что метод является чистой виртуальной функцией. Это делает класс абстрактным (вы не можете его инстанцировать), а его реализация оставляется производным классам.
Это используется, когда вы хотите определить только интерфейс. Используйте ключевое слово virtual, когда вы хотите определить интерфейс, а также предоставить реализацию по умолчанию.