Описание тега virtual-method
Виртуальный метод - это метод, поведение которого может быть переопределено в наследующем классе функцией с такой же сигнатурой.
3
ответа
Производительность Expression.Compile против Lambda, прямые против виртуальных вызовов
Мне интересно, насколько быстродействующим является Expression.Compile по сравнению с лямбда-выражением в коде и по сравнению с прямым использованием методов, а также с прямыми вызовами методов по сравнению с вызовами виртуальных методов (псевдокод)…
04 мар '16 в 20:39
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, зная, что все будет немного по-другому из-за отсутствия изменчивости. Я играл с типами классов, но мое понимание их ограничено ими как интерфейсами. Итак,…
25 ноя '13 в 03:31
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<class S> class A { public: virtual int foo(S arg) = 0; virtual ~A() { } }; class B : public A<int* __restrict__> { public: int foo(int* __restrict__ a…
06 мар '16 в 23:10
1
ответ
Как узнать количество возможных целей на сайте вызова?
В Java большинство методов являются виртуальными. На сайте вызова могут быть вызваны различные фактические методы в зависимости от объектов. Это динамическая отправка. Вопрос: Можем ли мы получить количество целей для сайта вызова статически? Наприм…
11 июл '13 в 23:10
1
ответ
C++ vtable в множественном наследовании, указатель на метод thunk
Я прочитал эту статью: https://shaharmike.com/cpp/vtable-part2/ И я не могу понять, почему в vtable (в конце статьи) у нас есть такой указатель: 0x400918 0x400820 не виртуальный Thunk для Child::FatherFoo() но не указатель непосредственно на метод C…
26 фев '18 в 21:15
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…
18 май '17 в 16:49
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