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

Виртуальный метод - это метод, поведение которого может быть переопределено в наследующем классе функцией с такой же сигнатурой.
3 ответа

Производительность Expression.Compile против Lambda, прямые против виртуальных вызовов

Мне интересно, насколько быстродействующим является Expression.Compile по сравнению с лямбда-выражением в коде и по сравнению с прямым использованием методов, а также с прямыми вызовами методов по сравнению с вызовами виртуальных методов (псевдокод)…
2 ответа

Вызывать виртуальный метод без указания на объект?

#include <iostream> struct A { void init() { internal_init(); } virtual void internal_init() { std::cout << "internal of A" << std::endl; } }; struct B: public A { void internal_init() { init(); std::cout << "internal of B" &…
15 сен '15 в 14:11
4 ответа

Объектно-ориентированное программирование на Хаскеле

Я пытаюсь получить представление об объектно-ориентированном программировании в стиле Haskell, зная, что все будет немного по-другому из-за отсутствия изменчивости. Я играл с типами классов, но мое понимание их ограничено ими как интерфейсами. Итак,…
2 ответа

Что происходит, когда виртуальная память исчерпана

Я публикую этот вопрос, так как не смог найти ответ на поиск в Google и переполнение стека... Вопрос в том, что происходит, когда пространство подкачки виртуальной памяти исчерпано. Как ОС справляется с такой ситуацией, когда все ОЗУ и Виртуальная п…
29 сен '12 в 16:55
1 ответ

Создание QList объектов абстрактного класса в C++/QT?

Хотя мне много раз помогли другие вопросы / ответы здесь, это мой первый вопрос здесь, так что не будьте слишком резкими со мной!:) Я изучал QT/C++ и давайте предположим, что у меня есть что-то вроде этого: class AbstractMasterClass{ public: virtual…
18 авг '14 в 16:32
6 ответов

Интерфейс, аннотация или просто виртуальные методы?

У меня есть куча систем, давайте называть их A, B, C, D, E, F, G, H, I, J, Все они имеют сходные методы и свойства. Некоторые содержат точно такой же метод и свойства, некоторые могут немного отличаться, а некоторые могут сильно различаться. Прямо с…
28 сен '11 в 20:24
4 ответа

Использование отражения для переопределения таблиц виртуальных методов в C#

Есть ли способ изменить таблицы виртуальных методов в C#? как изменить, где указывает виртуальный метод? class A { public virtual void B() { Console.WriteLine("B"); } } class Program { public static void MyB(A a) { Console.WriteLine("MyB"); } public…
01 май '11 в 14:13
3 ответа

Когда безопасно вызывать виртуальную функцию в конструкторе

У меня есть код, где я действительно хочу вызвать виртуальный метод из конструктора. Я знаю, что это считается небезопасным, и я достаточно знаю о строительстве объектов, чтобы понять, почему. Я тоже не испытываю этих проблем. В настоящее время мой …
20 янв '12 в 21:26
2 ответа

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

Относительно этого вопроса и ответа на него, похоже, есть исключение, но оно вызвало у меня больше вопросов, чем ответов на них. Учти это: #include <iostream> using namespace std; struct base { virtual void test() {cout << "base::test" &…
29 авг '16 в 16:46
2 ответа

Как реализовать статическую функцию виртуального члена

TL/DR: есть ли (более удобный) способ реализовать такую ​​функциональность? Я должен вызвать один и тот же статический код как для типа класса, так и для экземпляра класса, представленного ссылкой на базу: int main() { // Invokes on class bar<C1&…
30 июл '15 в 10:26
3 ответа

Переопределение "виртуальной пустоты" C++ ошибка

Следующий код дает мне ошибку. Ошибка: переопределение 'virtual void Animal::getClass()', где говорится, что virtual void getClass() { cout << "I'm a animal" << endl; } Ошибка: конфликтует возвращаемый тип, указанный для 'virtual int Dog::getClass()…
15 янв '16 в 02:31
1 ответ

Переопределить чисто виртуальный метод с реализацией родительского класса в C++

Я использую множественное наследование, чтобы предоставить два разных интерфейса, которые совместно используют похожий метод. Код MWE выглядит следующим образом: struct A { virtual void foo() = 0; }; struct B { virtual void foo() = 0; }; struct C : …
19 дек '17 в 16:29
1 ответ

Аргументы шаблона типа restrict-pointer и переопределение виртуальных методов шаблонного базового класса

Я полагаю, что следующее должно компилироваться и связываться, но это не так: template&lt;class S&gt; class A { public: virtual int foo(S arg) = 0; virtual ~A() { } }; class B : public A&lt;int* __restrict__&gt; { public: int foo(int* __restrict__ a…
1 ответ

Как узнать количество возможных целей на сайте вызова?

В Java большинство методов являются виртуальными. На сайте вызова могут быть вызваны различные фактические методы в зависимости от объектов. Это динамическая отправка. Вопрос: Можем ли мы получить количество целей для сайта вызова статически? Наприм…
1 ответ

C++ vtable в множественном наследовании, указатель на метод thunk

Я прочитал эту статью: https://shaharmike.com/cpp/vtable-part2/ И я не могу понять, почему в vtable (в конце статьи) у нас есть такой указатель: 0x400918 0x400820 не виртуальный Thunk для Child::FatherFoo() но не указатель непосредственно на метод C…
2 ответа

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

У меня есть абстрактный базовый класс с виртуальным методом. В производном классе этот метод реализован. Однако я хочу, чтобы функция в производном классе была статическим методом, чтобы можно было вызывать функцию без создания экземпляра объекта эт…
29 авг '13 в 15:08
2 ответа

Не знаете, как настроить методы в файле.cpp при включении заголовка с виртуальными методами

Итак, я новичок в C++ и у меня есть назначение для создания отсортированного связанного списка с предоставленными заголовками sortedlist.h и конечно же node.h. Мне не нужна помощь с каким-либо кодом в методах, только как настроить мои классы, я боль…
22 фев '14 в 22:58
0 ответов

В Angular, Как вызвать виртуальный метод из класса, чем наследует внутри родительского класса?

У меня есть два компонента, которые наследуют один базовый класс: Класс ChildA расширяет базу Класс ChildB расширяет базу Чтобы факторизовать какой-то метод, я хотел бы вызвать foo() из Childs в OnChanges() из Base следующим образом: export abstract…
0 ответов

Почему подклассы не могут переопределить "частный" базовый метод в Python?

В настоящее время я ошеломлен некоторым поведением Python: class Base(object): def foo(self): self.__virtual_function() self.virtual_function() def __virtual_function(self): print("private Base") def virtual_function(self): print("public Base") clas…
09 июн '17 в 07:53
2 ответа

HashSet вызывает переопределенный метод в конструкторе

Это плохая практика для вызова переопределенных методов в конструкторе (см. Эту ссылку). Это всегда будет вызывать метод, определенный в классе, а не метод производного класса. В Java HashSet есть конструктор, который принимает Collection, Этот мето…
02 май '15 в 19:00