Вопросы по теме 'virtual-functions'

Откуда происходят сбои при вызове чисто виртуальных функций?
Я иногда замечаю программы, которые вылетают на моем компьютере с ошибкой: «вызов чистой виртуальной функции». Как эти программы даже компилируются, если объект не может быть создан из абстрактного класса?
103102 просмотров

Есть ли причина не делать функцию-член виртуальной?
Есть ли реальная причина не делать виртуальную функцию-член в C++? Конечно, всегда есть аргумент в пользу производительности, но в большинстве ситуаций он кажется неприемлемым, поскольку накладные расходы виртуальных функций довольно низки. С...
5005 просмотров
schedule 06.05.2023

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

Вызов виртуальной функции из конструктора
Возможно, я ошибаюсь, но это, кажется, очень простой вопрос. Внезапно моя цепочка наследования перестала работать. Написание небольшого базового тестового приложения доказало, что ошибался я (поэтому я не могу винить компилятор). У меня есть...
971 просмотров

Множественное наследование + беспорядок виртуальных функций
У меня есть сценарий множественного наследования с бриллиантами, например: A / \ B C \ / D Общий родитель, A, определяет виртуальную функцию fn (). Возможно ли, чтобы B и C определяли fn() ? Если да, то следующий...
29290 просмотров

Действительно ли встроенные виртуальные функции бессмысленны?
Я получил этот вопрос, когда получил комментарий обзора кода, в котором говорилось, что виртуальные функции не обязательно должны быть встроенными. Я думал, что встроенные виртуальные функции могут пригодиться в сценариях, где функции вызываются...
83264 просмотров
schedule 17.08.2022

Почему все методы Java неявно переопределяются?
В C ++ я должен явно указать ключевое слово virtual, чтобы сделать функцию-член `` переопределяемой '', так как это связано с накладными расходами на создание виртуальных таблиц и vpointers, когда функция-член становится переопределяемой (так что...
3140 просмотров
schedule 16.02.2023

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

Правильная реализация виртуальных функций в PHP?
на моем рабочем месте (только php) у нас есть базовый класс для абстракции базы данных. Если вы хотите добавить новую таблицу базы данных на базовый уровень, вы должны создать подкласс этого базового класса и переопределить некоторые методы, чтобы...
28076 просмотров
schedule 01.06.2023

С++ вызывает виртуальный метод в дочернем классе
у меня есть следующие классы: class A { protected: A *inner; public: .... virtual void doSomething() = 0; .... } class B: public A { ... void doSomething() { if(inner != NULL) inner->doSomething();...
944 просмотров
schedule 06.06.2022

Виртуальные функции с двумя операндами, которые могут принимать различные типы
Позвольте мне начать с конкретного примера. В С++ у меня есть иерархия классов под абстрактным базовым классом CollisionVolume . Любой объем коллизий должен иметь возможность detectCollision с любым другим объемом. Этот код коллизии...
217 просмотров

Бывают ли случаи, когда класс объявляет виртуальные методы и компилятору не нужно использовать vptr?
Мне было интересно, существует ли возможная оптимизация, при которой компилятору не нужно назначать vptr созданному объекту, даже если тип объекта является классом с виртуальными методами. Например, рассмотрим: #include <iostream> struct...
151 просмотров
schedule 01.11.2022

Как переопределить виртуальную функцию в хорошем стиле? [С++]
ребята, я знаю, что этот вопрос очень простой, но я встречал в нескольких публикациях (веб-сайтах, книгах) другой стиль переопределения виртуальной функции. Я имею в виду: если у меня есть базовый класс: class Base { public: virtual void f() =...
1503 просмотров

Разрешение перегрузки и виртуальные методы
Рассмотрим следующий код (он немного длинный, но, надеюсь, вы сможете понять): class A { } class B : A { } class C { public virtual void Foo(B b) { Console.WriteLine("base.Foo(B)"); } } class D: C { public override void...
2456 просмотров

C ++: указатель на мономорфную версию виртуальной функции-члена?
В C ++ можно получить указатель на (нестатическую) функцию-член класса, а затем вызвать его для объекта. Если функция была виртуальной, вызов отправляется динамически в зависимости от динамического типа объекта. Также возможно (без использования...
1643 просмотров

Виртуальные функции: перебор вектора «Базовый класс», заполненного объектами подкласса
Краткое описание: Я перебираю вектор, вызывая виртуальную функцию для каждого объекта в векторе, чтобы выполнить последовательность действий. Вектор относится к базовому классу, как и итератор. Все объекты являются дочерними. Когда вызывается...
5029 просмотров
schedule 28.05.2023

в С++ при создании подклассов, почему иногда нужно добавлять виртуальное ключевое слово в переопределенную функцию?
Почему я иногда вижу в примерах C++, когда речь идет о подклассах/наследовании, базовый класс имеет виртуальное ключевое слово, а иногда переопределенная функция также имеет виртуальное ключевое слово, почему иногда необходимо добавлять в подкласс...
9437 просмотров
schedule 16.09.2022

Виртуальные функции против обратных вызовов
Рассмотрим сценарий, в котором есть два класса, т. е. базовый и производный. Если базовый класс хочет вызвать функцию производного класса, он может сделать это, либо создав виртуальную функцию и определив эту виртуальную функцию в производном...
2803 просмотров
schedule 10.06.2022

Изменение сигнатур абстрактных методов в унаследованных классах
Представьте, что у меня есть класс Engine в качестве абстрактного базового класса. У меня также есть классы ElectrictEngine и FuelEngine, производные от него. Я хочу создать метод для заправки двигателя. Должен ли я сделать это как абстрактный...
2184 просмотров

Чисто виртуальные методы с разными типами данных
Я создаю базовый класс для своих классов-контейнеров, чтобы я мог поддерживать согласованный интерфейс. В настоящее время это выглядит примерно так: template <typename Datatype> class BaseClass { public: virtual Datatype Foo() = 0;...
724 просмотров