В C++ возможно иметь определенную чисто виртуальную функцию?

В основном, есть два пути.

Одним из них является использование отражения , это означает: полагаться на информацию о типе среды выполнения , обычно полученную из необработанных строк. Как сказать: у меня есть некоторый объект класса X, и я хочу вызвать метод с именем "doTheFoo ()" для этого объекта.

См. здесь для всех деталей славы.

Несколько лучший способ - использовать класс MethodHandle вместо класса «сырого» метода отражения. См. здесь для ручек.

1110 Но потом: отражение происходит во время выполнения. Ваш код компилируется нормально, но если вы ошибаетесь в деталях, он взрывается во время выполнения.

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

6
задан Kara 28 June 2013 в 23:53
поделиться

2 ответа

На самом деле можно объявить функцию как чисто виртуальную и все еще определить реализацию для нее в базовом классе.

class Abstract {
public:
   virtual void pure_virtual(int x) = 0;
};

void Abstract::pure_virtual(int x) {
   // do something
}


class Child : public Abstract {
    virtual void pure_virtual(int x);
};

void Child::pure_virtual(int x) {
    // do something with x
    Abstract::pure_virtual();
}
9
ответ дан 8 December 2019 в 13:03
поделиться

Можно предоставить определение для чистой виртуальной функции. Проверьте GotW № 31 для получения дополнительной информации.

9
ответ дан 8 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

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