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

Идиома виртуального конструктора — добродетельное или полное заблуждение
Одно из золотых правил C++ заключается в том, что время жизни экземпляра начинается, когда его конструктор успешно завершается, и заканчивается, когда начинается его деструктор. Из этого правила мы делаем вывод, что НЕ рекомендуется вызывать...
782 просмотров

Использование возможностей виртуальных функций
Рассмотрим следующий пример кода: class Base { public: void f(); virtual void vf(); }; class Derived : public Base { public: void f(); void vf(); }; #include <iostream> using namespace std; void Base::f() { cout...
203 просмотров
schedule 15.11.2023

Почему виртуальная таблица требуется только в случае виртуальных функций?
Из http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ , такой код, как class Base { public: virtual void function1() {}; virtual void function2() {}; }; class D1: public Base { public: virtual void function1() {}; }; class...
481 просмотров
schedule 18.12.2023

Требуется разъяснение по виртуальным функциям и закрытым членам класса
В С++, если общедоступная виртуальная функция базового класса имеет ссылку на поле частного члена, а производный класс не переопределяет этот метод, тогда эта ссылка будет указывать на частный член производного класса.
113 просмотров
schedule 16.01.2024

Виртуальная функция С++ против указателя функции-члена (сравнение производительности)
Вызовы виртуальных функций могут быть медленными из-за того, что виртуальные вызовы требуют дополнительного индексированного уважения к v-таблице, что может привести к промаху кеша данных, а также к промаху кеша инструкций... Не очень хорошо для...
2852 просмотров

С++, вызывающий виртуальный метод в конструкторе
Я использую родительский класс, который имеет несколько виртуальных методов. Когда я вызываю виртуальный метод в конструкторе, он выдает ошибки LNK2019 и LNK1120 с сообщениями " error LNK2019: unresolved external symbol "protected: virtual int...
1075 просмотров
schedule 19.03.2024

Невозможно переопределить to_String из-за целого числа в C++
У меня есть класс Employee, который имеет несколько подклассов. Я хочу переопределить функцию to_String в моем суперклассе и во всех подклассах, но я не могу заставить ее работать из-за целого числа в суперклассе: class Employee{ public:...
169 просмотров
schedule 11.12.2022

Как объяснить такое поведение с помощью перегруженных и переопределенных методов?
Может ли кто-нибудь быть таким любезным и объяснить мне, почему этот код показывает Derived.DoWork(double) . Я могу придумать несколько объяснений этому поведению, однако я хочу, чтобы кто-нибудь разъяснил это мне. using System; public class...
260 просмотров
schedule 13.10.2022

C++ наследует класс шаблона
У меня есть своеобразная просьба, надеюсь, она не слишком надуманная и может быть выполнена. У меня есть класс шаблона template<class T> class Packable { public: // Packs a <class T> into a Packet (Packet...
140 просмотров

Как чисто виртуальные методы реализованы в Python?
Я пока не нашел как. Тем временем я в настоящее время использую вот так: @abc.abstractmethod def pure_virtual_method(self, a, b): """ Method description. :param a: Whatever... :param b: Whatever... :returns:...
210 просмотров
schedule 13.12.2022

Как компилятор узнает, какая запись в vtable соответствует виртуальной функции?
Допустим, у нас есть несколько виртуальных функций в родительском и производном классах. Для этих виртуальных функций будет создана таблица vtable в таблице vtable как для родительского производного класса. Как компилятор узнает, какая запись в...
1651 просмотров

Периодически прерванный сброс ядра. Может быть, ошибка static_cast?
Я пишу нейронную сеть обратного распространения на основе графа в качестве личного проекта. Все еще на передней опорной ступеньке. Он компилируется. Успешно работает в половине случаев, сбой на самом последнем шаге в половине случаев. Похоже, он...
96 просмотров

Вызов виртуального метода из базы
Я пытаюсь создать библиотеку для MigraDoc на основе этого примера , который поддерживает различные типы документов. Моя идея состояла в том, чтобы создать базовый класс с виртуальным методом для CreatePage() (метод, отвечающий за макет страницы)....
72 просмотров
schedule 05.02.2024

Зачем добавлять final в функцию-член конечного класса?
Рассмотрим следующий код: #include <iostream> class B { virtual void f() { std::cout << "Base" << '\n'; } }; class D final: public Base { void f() final override { std::cout << "Derived" <<...
145 просмотров

Как получить абстрактные классы шаблонов с типами шаблонов в качестве параметров функции (C++11)
Мне поручили написать класс «binaryExpressionTree», который является производным от класса абстрактного шаблона «binaryTreeType». binaryExpressionTree имеет тип String. В рамках задания я должен переопределить эти 3 виртуальные функции из...
38 просмотров

как работают виртуальные функции и что происходит с новым типом возвращаемого значения при назначении?
#include<iostream> using namespace std; class Father { public: int a=99; void MakeAThing(){ cout<<"MakeAThing of father called"<<endl;} virtual void MakeAThing2(){ cout<<"MakeAThing2 of father called"<<endl;} };...
40 просмотров

Как я могу определить виртуальную функцию, которая принимает производный тип в качестве параметра?
У меня есть родительский класс Obj с пустой виртуальной функцией cmp class Obj{ public: virtual int cmp(const Obj& val) = 0; ... }; Я пытаюсь определить эту функцию в подклассе MyString, но вместо const Obj& в качестве...
105 просмотров
schedule 18.10.2022

Есть ли способ использовать итераторы STL в качестве аргументов без шаблона?
У меня есть class A , который реализует функцию foo , которая принимает в качестве аргументов два итератора (из любого контейнера stl). Для того, что я видел, общий подход заключается в использовании шаблона, как показано здесь: class A{...
54 просмотров
schedule 18.11.2022