Описание тега virtual-functions
В объектно-ориентированном программировании виртуальная функция или виртуальный метод - это функция или метод, поведение которых может быть переопределено в наследующем классе функцией с той же сигнатурой. Эта концепция является очень важной частью полиморфизма в объектно-ориентированном программировании (ООП).
2
ответа
Мне нужна помощь по этому ключевому слову и наследованию
abstract class BaseClass { public virtual void Accept(IVisitor visitor) { visitor.Visit(this); } } class DerivedClass: BaseClass { } interface IVisitor { void Visit(BaseClass baseEntity); void Visit(DerivedClass derivedEntity); } class Visitor : IVi…
30 мар '17 в 23:50
4
ответа
Заставить производный класс переопределить хотя бы одну виртуальную функцию
Представьте себе этот простой базовый класс: struct simple_http_service { virtual reply http_get(…); virtual reply http_post(…); virtual reply http_delete(…); // etc. }; Я хотел бы запретить пользователю выходить из этого класса, не переопределяя хо…
04 июн '11 в 09:30
1
ответ
Проблемы с реализацией виртуальной функции
У меня есть некоторые проблемы с реализацией виртуальной функции родительского класса: поэтому мой код: class Shape { public: virtual ~Shape(); virtual bool Intersect (const Ray& ray, double& t) const =0;// to premit abstraktion (definition …
19 дек '13 в 16:05
3
ответа
Производительность Expression.Compile против Lambda, прямые против виртуальных вызовов
Мне интересно, насколько быстродействующим является Expression.Compile по сравнению с лямбда-выражением в коде и по сравнению с прямым использованием методов, а также с прямыми вызовами методов по сравнению с вызовами виртуальных методов (псевдокод)…
04 мар '16 в 20:39
3
ответа
Виртуальная функция
У меня есть вопрос относительно виртуальной функции C++. Производный класс (DerivedAlgo) реализует виртуальную функцию (BaseAlgo::process), но немного меняется в сигнатуре функции, используя DerivedData введите в качестве входного параметра вместо B…
18 апр '11 в 18:06
10
ответов
Безопасное переопределение виртуальных функций C++
У меня есть базовый класс с виртуальной функцией, и я хочу переопределить эту функцию в производном классе. Есть ли способ заставить компилятор проверить, переписывает ли функция, которую я объявил в производном классе, функцию в базовом классе? Я х…
30 янв '09 в 23:08
3
ответа
Виртуальная функция, вызывающая ошибку сегментации
Я получаю ошибку сегментации, когда пытаюсь получить доступ к виртуальной функции. Код в основном так: class Super { public: Super() { cout << "Ctor Super" << endl; } virtual void test() = 0; }; class Sub : public Super { public: Sub() {…
10 апр '11 в 11:52
2
ответа
Чисто виртуальный метод, называемый ошибкой
У меня есть следующие определения: class PartitioningMethod { public: virtual void addConstraints(ConstraintManager& cm) = 0; virtual bool hasMoreConstraints() = 0; virtual void setQuery(const Query& q) = 0; virtual ~PartitioningMethod(){ } …
20 авг '12 в 20:42
1
ответ
Чистая реализация виртуальной функции
Я читаю " Эффективный C++" Скотта Мейерса, и я нахожусь в разделе о наследовании. Он сказал, что Чистые виртуальные функции определяют только наследование интерфейса. Простые (нечистые) виртуальные функции определяют наследование интерфейса плюс нас…
03 дек '15 в 04:04
1
ответ
Виртуальные функции "Форма" Назначение
Я не могу заставить свой класс цилиндров правильно выполнять функции печати и объема. Вот инструкции для назначения: Разработайте класс с именем Shape, который является абстрактным базовым классом. Shape имеет две чисто виртуальные функции, printSha…
28 ноя '17 в 01:13
2
ответа
Таблица виртуальных функций множественного наследования
Пример кода следующий: class A { public: int k; virtual int f(); }; class B:public virtual A { public: virtual int a(); }; int main() { cout<<sizeof(A)<<sizeof(B); } Это печатает 8 12 Похоже на то class B имеет собственную новую таблицу …
27 авг '14 в 08:59
1
ответ
Можно ли использовать множественное наследование, если один родительский класс является интерфейсом?
Можно ли использовать множественное наследование, если один родительский класс является интерфейсом (содержит только чисто виртуальные функции с виртуальным деструктором)? Я хочу выставить только интерфейсную часть (желтый класс на рисунке) для уве…
13 май '12 в 05:16
2
ответа
Как избежать виртуальных функций в этом случае?
У меня есть ситуация, когда у меня есть класс на микроконтроллере, который имеет дело с широтно-импульсной модуляцией. Чрезвычайно упрощенный пример: class MotorDriver { int pin_; public: MotorDriver(int pin); void init(); void start(); void stop();…
05 янв '17 в 02:08
1
ответ
Метод переопределения, который возвращает разыменование к этому
У меня есть метод в Base класс, который возвращает разыменование this, Я хотел бы использовать этот метод в Derived класс, но и немного расширить его. Пример будет говорить сам за себя: #include <iostream> class Base { private: int value = 0; …
20 янв '16 в 08:51
2
ответа
Виртуальная функция в иерархии наследования
Когда у меня что-то подобное, и когда у меня есть a* mya=new c(); и я звоню a->displayStuff это вызывает Class a метод и когда virtual в Class a вместо Class bэто вызывает Class b метод. поскольку Class c не имеет реализации этого метода, какое п…
06 янв '14 в 16:57
4
ответа
Как сделать абстракцию для базового класса с помощью виртуальных функций?
У меня следующая структура class Base { public: Base(Type); virtual render } class A { public: Base(Type == A); void render() } class B { public: Base(Type == B); void render() } void client_function() { Base baseObject(A); //Base is an instance of …
08 сен '11 в 08:37
2
ответа
Определение функции члена при построении объекта
У меня есть класс, в котором мне нужна функция, которую я могу определить для каждого объекта. Я хотел бы иметь возможность определять конкретные функции каждого объекта при определении вектора указанных объектов. Эти векторы моего объекта составят …
18 апр '16 в 22:48
2
ответа
Хитрый полиморфизм и виртуальные функции
У меня есть следующий код. #include <iostream> using namespace std; class K { public: virtual void add_st(K* n) { cout << "add_st (K*) from K\n"; } }; class L: public K { public: virtual void add_st(L* a) { cout << "add_st (L*) fro…
26 июн '14 в 19:20
2
ответа
Почему использование не может быть использовано для определения виртуальной функции?
Я недавно обнаружил использование using импортировать функцию базового класса в пространство имен производного класса (когда он скрыт). Я пытался использовать его для импорта функции из базового класса в качестве реализации функции в производном кла…
27 июн '13 в 09:04
1
ответ
Какую информацию хранит RTTI для полиморфного объекта?
Прежде чем я начну - я знаю, что полиморфный объект имеет vtable для выбора правильного метода во время выполнения. Однако есть ли дополнительная информация, которую содержит каждый полиморфный объект (исключая vtable)? Я пытаюсь измерить размер / с…
04 янв '14 в 02:21