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

Когда не следует использовать виртуальные деструкторы?
Есть ли веская причина не объявлять виртуальный деструктор для класса? В каких случаях лучше не писать?
29846 просмотров

Улучшение Comparable ‹T› сравнения с производительностью
Я профилировал свой код и обнаружил, что мой класс, реализующий Comparable<T> , тратит в 8 раз больше времени процессора в compareTo(Object) чем в compareTo(T) Я предполагаю, что замедление происходит из-за поиска этого метода...
982 просмотров

Какова стоимость производительности виртуального метода в классе C ++?
Наличие хотя бы одного виртуального метода в классе C ++ (или любом из его родительских классов) означает, что класс будет иметь виртуальную таблицу, и каждый экземпляр будет иметь виртуальный указатель. Так что стоимость памяти вполне понятна....
35125 просмотров
schedule 18.05.2022

встроенная виртуальная функция
Насколько я понимаю, в C ++ виртуальная функция может быть встроена, но, как правило, указание на встроенную функцию игнорируется. Кажется, что встроенные виртуальные функции не имеют особого смысла. Это правильно? Может ли кто-нибудь привести...
15655 просмотров
schedule 11.04.2022

C++ против C++/CLI: Константная квалификация параметров виртуальной функции
[Все нижеперечисленное было протестировано с использованием Visual Studio 2008 SP1] В C++ константная квалификация типов параметров не влияет на тип функции (8.3.5/3: любой квалификатор cv, изменяющий тип параметра, удаляется) Так, например, в...
3407 просмотров

Почему g++ хранит имена классов в скомпилированном двоичном файле?
Я заметил, что если я запускаю strings в своей программе, которая была скомпилирована g++ , вывод содержит имена различных классов, которые он использует. Программа была скомпилирована с -O3 и без -g или -p , и имена классов все еще...
1257 просмотров
schedule 03.08.2022

Множественное наследование от одного и того же прародителя - объединить реализации?
для определенного проекта я объявил интерфейс (класс только с чисто виртуальными функциями) и хочу предложить пользователям некоторые реализации этого интерфейса. Я хочу, чтобы у пользователей была большая гибкость, поэтому я предлагаю частичные...
754 просмотров

переопределить виртуальный метод c ++
У меня есть шаблон класса, в котором некоторые методы определены как виртуальные, чтобы дать пользователю моего класса возможность реализовать для них реализацию в своем производном классе. Обратите внимание, что в моем классе-шаблоне есть несколько...
52158 просмотров

список полиморфных объектов
У меня есть конкретный сценарий ниже. Приведенный ниже код должен печатать функцию «say ()» класса B и C и печатать «B говорит ...» и «C говорит ...», но это не так. Любые идеи. Я изучаю полиморфизм, поэтому также прокомментировал несколько...
7197 просмотров
schedule 27.04.2022

Когда следует ограничивать доступность виртуальной функции в производном классе?
Рассмотрим следующий код: class Base { public: virtual void Foo() {} }; class Derived : public Base { private: void Foo() {} }; void func() { Base* a = new Derived; a->Foo(); //fine, calls Derived::Foo() Derived* b = new...
287 просмотров

boost python: как вызвать виртуальную функцию C++
У меня есть python, встроенный в приложение C++. C++ вызывает python и передает его в качестве аргумента объекту C++. этот объект имеет некоторые виртуальные функции и может быть базовым классом для некоторого производного класса. Как заставить...
1267 просмотров

Влияние виртуального ключевого слова с функцией в *производном* классе на производительность
Derived1 и Derived2 наследуются от Base, в то время как ни один класс не наследуется от Derived1 и Derived2. В классах, объявленных ниже, смогу ли я уменьшить один уровень косвенности, не используя ключевое слово «виртуальный» в объявлении...
191 просмотров

Правильное поведение с помощью виртуальных методов
Предположим, у меня есть чисто виртуальный метод в интерфейсе base , который возвращает мне список something : class base { public: virtual std::list<something> get() = 0; }; Предположим, у меня есть два класса, которые...
149 просмотров

Как использовать std :: bind () для вызова версии виртуальной функции базового класса?
Я пытаюсь использовать std :: bind () для создания функции, которая будет вызывать версию виртуальной функции базового класса, а не вызывать версию производного класса. struct Base { virtual void foo() { cout << "Base\n"; } }; struct...
6341 просмотров

Вызов члена производного класса из виртуальной функции
Я немного запутался в отношении виртуальных функций. Предположим, у вас есть базовый класс с виртуальной функцией foo (), и эта функция затем переопределена в производном классе class Baseclass { public: virtual void foo()...
149 просмотров
schedule 28.04.2022

С++ избегает динамической отправки в производных классах с использованием ключевого слова
Буду ли я использовать динамическую диспетчеризацию для вызова виртуальных функций в следующем примере? struct Base{ virtual double fn(){return 3.2;} }; struct Deri1 : public Base{ using Base::fn; } struct Deri2 : public Base{ virtual...
859 просмотров
schedule 02.03.2023

Может ли быть хорошей идеей помещать виртуальные методы в копируемый тип?
Видели несколько связанных вопросов, но не этот ... Я рассматривал классы как относящиеся к нескольким основным категориям, скажем, для простоты, этим четырем: Классы значений , которые содержат некоторые данные и набор операций. Их можно...
651 просмотров

Чисто виртуальный метод называется кросс-компиляция
Я пишу библиотеку программирования на основе событий для использования на BeagleBone Black и обнаружил странную ошибку. Когда я компилирую точно такой же код с точно такими же флагами, я получаю следующие ошибки на процессоре на базе ARM, но не...
2258 просмотров

Какую информацию хранит RTTI для полиморфного объекта?
Прежде чем я начну, я знаю, что полиморфный объект имеет виртуальную таблицу для выбора правильного метода во время выполнения. Однако есть ли дополнительная информация, которую содержит каждый полиморфный объект (за исключением виртуальной таблицы)?...
305 просмотров

Предупреждение: перегруженная виртуальная функция Base :: process только частично переопределяется в производном классе
Я получаю предупреждение ниже. часть моего кода: class Base { public: virtual void process(int x) {;}; virtual void process(int a,float b) {;}; protected: int pd; float pb; }; class derived: public Base{ public: void...
5816 просмотров