Описание тега pure-virtual

Виртуальная функция, которая должна быть реализована каждым неабстрактным производным классом. Обычно это используется, когда программист хочет гарантировать, что функция будет существовать во время выполнения, но когда существует несколько способов определения ее поведения без очевидного "лучшего способа".
3 ответа

Вызов реализации производного класса чистой виртуальной функции статически с использованием функции в базовом классе

Это обсуждение обсуждается в другом месте в stackru, но я действительно не нашел четкого ответа на свой вопрос. Моя установка такова: class BaseClass { virtual short return_number_for_thing1(std::string thing1)=0; //note the pure virtual virtual sho…
02 май '14 в 15:11
4 ответа

Что означает 0 в чистой виртуальной функции

Программа ниже не компилируется по понятным причинам: #include <iostream> using namespace std; class A { public: A() { pVirt(); } virtual void pVirt() const = 0 { count<<"A::pVirt()"; } }; int main() { A aObj; aObj.pVirt(); reutrn 0; } В…
06 фев '13 в 12:20
3 ответа

Vtable размещение полностью чисто виртуального класса

Согласно моим (ограниченным) знаниям спецификации C++, виртуальная таблица класса с виртуальными членами помещается в определение первого не чистого не встроенного виртуального метода. Как компиляторы обрабатывают классы, которые наследуются от клас…
06 янв '11 в 18:05
3 ответа

Вызов чистой виртуальной функции из базового класса, который ее не определяет?

У меня есть следующий класс: class gkLogicBrick { public: gkLogicBrick(gkGameObject* object, gkLogicLink* link, const gkString& name); virtual ~gkLogicBrick(); virtual gkLogicBrick* clone(gkLogicLink* link, gkGameObject* dest) = 0; //unimportant…
05 июл '13 в 20:24
0 ответов

Трассировка стека не выявляет причину Pure Virtual Call

У меня есть устаревшая система, написанная на C++ и построенная с использованием Visual C++ 6. Это многопоточное приложение MFC 4.2, использующее объекты ATL COM для реализации архитектуры подключаемых модулей. 2 или 3 раза в год в сборке выпуска бу…
18 мар '14 в 16:18
1 ответ

Наследование и чисто виртуальная функция в с ++

Я не получаю желаемый результат с этой программой. Предупреждения, которые я получаю: Класс 'shape' имеет виртуальный метод 'shap', но не виртуальный деструктор. У lass 'square' есть виртуальный метод 'shap', но не виртуальный деструктор. Класс 'rec…
13 авг '14 в 05:04
4 ответа

Проблема проектирования наследования C++

В C++ я хочу иметь массив абстрактного типа Query с функцией calcScore(), которая является чисто виртуальной функцией.И у меня есть два класса, которые не являются абстрактными: ConQuery и DisQuery, которые реализуют функцию calcScore. Для этого я о…
11 июн '12 в 16:18
1 ответ

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

У меня абстрактный интерфейс Person который наследуется Customer а также SalesPerson, Person содержит чисто виртуальные функции для каждой функции-члена двух производных классов, которые должны вызываться друг другом посредством ссылок на базу (поли…
12 авг '13 в 02:02
2 ответа

Действительно ли компилятор обеспечивает реализацию чистого виртуального деструктора?

Чтобы проверить утверждение "компилятор и компоновщик обеспечивают существование тела функции для чистого виртуального деструктора." Из этой статьи geeksforgeeks, я скомпилировал этот код: class Base { public: virtual ~Base()=0; // Pure virtual dest…
2 ответа

Чистый виртуальный деструктор в C++

Это неправильно писать: class A { public: virtual ~A() = 0; }; для абстрактного базового класса? По крайней мере, это компилируется в MSVC... Будет ли сбой во время выполнения?
10 мар '09 в 16:02
4 ответа

Что может вызвать чисто виртуальный вызов функции в C++?

Я преподаю класс программирования C++, и я видел достаточно классов ошибок, которые у меня есть хорошее представление о том, как диагностировать распространенные ошибки C++. Однако есть один основной тип ошибок, для которого моя интуиция не особенно…
06 янв '11 в 07:19
1 ответ

Чисто виртуальный базовый класс boost::python со статическим конструктором фабрики и std::unique_ptr

Я посмотрел на все связанные вопросы, которые смог найти, и не смог найти ответ на эту конкретную ситуацию. У меня есть чистый виртуальный интерфейс базового класса C++, который я хочу представить в Python. Реализация наследуется от Base и не раскры…
25 апр '16 в 17:03
1 ответ

Чисто виртуальные шаблонные функции в шаблонном классе

Поэтому мой инструктор раздал некоторый код, который, я считаю, не работает вообще, и я хочу получить некоторые разъяснения по нему. Он использовал это в своих заметках (это подразумевает, что это правильно). template<class T> class State { pu…
15 ноя '12 в 18:44
1 ответ

Чистая виртуальная функция в абстрактном классе с возвращаемым типом базового / производного типа

Я хочу сделать каждый производный класс базового класса для реализации функции (в данном случае оператора postfix), который имеет тип производного класса в качестве возвращаемого типа, как это: class A { virtual A operator++(int) =0; } class B : pub…
1 ответ

Чистые виртуальные функции и неиспользуемые аргументы в дочерних функциях в C++

У меня есть следующее: class Parent { public: virtual bool foo(vector<string> arg1, vector<string> arg2) = 0; }; class Child : public Parent { public: bool foo(vector<string> arg1, vector<string> arg2); }; // arg1 and arg2 no…
19 июл '11 в 20:28
4 ответа

Должен ли деструктор абстрактного класса быть чисто виртуальным?

Я думаю, что одного виртуального обычно достаточно. Есть ли другая причина сделать его чисто виртуальным, чем заставлять производные классы реализовывать свой собственный деструктор? Я имею в виду, что если вы выделяете что-то в конструкторе вашего …
17 авг '10 в 13:45
4 ответа

Имеет ли чисто абстрактный класс C++, объявленный в заголовке, который используется в разных проектах (без привязки во время компиляции), одну и ту же модель виртуальной таблицы?

У меня есть заголовок C++, объявляющий класс, состоящий только из чисто виртуальных методов. У меня есть две библиотеки DLL, использующие этот заголовок (с одной, реализующей этот интерфейс), но не связанные во время компиляции. Одна DLL загружает д…
07 фев '12 в 20:38
0 ответов

Чисто виртуальный метод предположительно переопределен, но не знаю, где

Я работаю с библиотекой генетических алгоритмов ParadisEO. Мой алгоритм работает нормально, но мне не удается использовать библиотечный объект, называемый "архивом", в котором хранятся недоминированные индивидуумы (т.е. лучшие из лучших) на протяжен…
01 ноя '13 в 20:15
1 ответ

Виртуальные чистые функции

Я понимаю, что чисто виртуальная функция внутри класса делает этот класс абстрактным. Это означает, что я не могу создавать объекты с этим классом и что я должен переопределить эту виртуальную функцию во всех производных классах. У меня есть следующ…
25 май '14 в 06:30
2 ответа

Удовлетворение чистого контракта виртуальной функции с наследованием класса шаблона

Извиняюсь, если на этот вопрос уже был дан ответ; Я искал Stack Overflow, но не мог найти ничего подобного. У меня есть ощущение, что то, что я спрашиваю, невозможно, но я уверен, что должен быть способ достичь этого. Я работаю с базовым классом, ко…
13 мар '18 в 20:58