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

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

virtual void yield() = 0;

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

Спасибо.

28
задан Anders Abel 26 March 2010 в 12:40
поделиться

4 ответа

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

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

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

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

28
ответ дан 28 November 2019 в 03:30
поделиться

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

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

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

10
ответ дан 28 November 2019 в 03:30
поделиться

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

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

3
ответ дан 28 November 2019 в 03:30
поделиться

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

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

0
ответ дан 28 November 2019 в 03:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: