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

В объектно-ориентированном программировании виртуальная функция или виртуальный метод - это функция или метод, поведение которых может быть переопределено внутри наследующего класса функцией с той же сигнатурой. Эта концепция является очень важной частью части полиморфизма объектно-ориентированного программирования (ООП).
27

В чем разница между абстрактной функцией и виртуальной функцией?

В чем разница между абстрактной функцией и виртуальной функцией? В каких случаях рекомендуется использовать виртуальный или абстрактный? Какой из них лучший?
24 дек. '08 в 14:11
17

Виртуальный вызов участника в конструкторе

Я получаю предупреждение от ReSharper о вызове виртуального члена из моего конструктора объектов. Зачем это делать?
23 сент. '08 в 7:11
25

Зачем нам нужны виртуальные функции на С++?

Я изучаю С++, и я просто вхожу в виртуальные функции. Из того, что я прочитал (в книге и в Интернете), виртуальные функции - это функции в базовом классе, которые вы можете переопределить в производных классах. Но ранее в книге, узнав о базовом нас...
06 мар. '10 в 7:10
12

Может ли шаблон функции члена класса быть виртуальным?

Я слышал, что шаблоны функций класса С++ не могут быть виртуальными. Это правда? Если они могут быть виртуальными, то каков пример сценария, в котором можно использовать такую ​​функцию?
01 мар. '10 в 6:26
6

Можно ли вызвать виртуальную функцию базового класса, если я ее переопределяю?

Скажем, что у меня есть классы Foo и Bar, настроенные следующим образом: class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; ...
23 мар. '09 в 6:17
21

Почему у нас нет виртуального конструктора на С++?

Почему у С++ нет виртуального конструктора?
09 апр. '09 в 8:46
9

С++ "виртуальное" ключевое слово для функций в производных классах. Это необходимо?

С приведенным ниже описанием структуры... struct A { virtual void hello() = 0; }; Подход №1: struct B : public A { virtual void hello() { ... } }; Подход № 2: struct B : public A { void hello() { ... } }; Есть ли разница между эт...
04 февр. '11 в 6:46
12

Действительно ли встроенные виртуальные функции не имеют смысла?

У меня возник этот вопрос, когда я получил комментарий к обзору кода, говорящий, что виртуальные функции не обязательно должны быть встроенными. Я думал, что встроенные виртуальные функции могут пригодиться в сценариях, где функции вызываются непоср...
09 апр. '09 в 11:03
6

Можете ли вы писать виртуальные функции/методы на Java?

Можно ли писать виртуальные методы в Java, как это было бы в С++? Или, есть ли подходящий Java-подход, который вы можете реализовать, который производит подобное поведение? Могу ли я привести несколько примеров?
28 дек. '10 в 16:17
8

Откуда происходят сбои "чистой виртуальной функции"?

Я иногда замечаю программы, которые сбой на моем компьютере с ошибкой: "чистый вызов виртуальной функции". Как эти программы даже компилируются, когда объект не может быть создан из абстрактного класса?
19 сент. '08 в 4:09
9

Безопасное переопределение виртуальных функций С++

У меня есть базовый класс с виртуальной функцией, и я хочу переопределить эту функцию в производном классе. Есть ли способ заставить компилятор проверить, действительно ли функция, объявленная в производном классе, переопределяет функцию в базовом кл...
30 янв. '09 в 23:08
9

Почему С# реализует методы как не виртуальные по умолчанию?

В отличие от Java, почему С# обрабатывает методы как не виртуальные функции по умолчанию? Вероятнее всего, это скорее проблема производительности, чем другие возможные результаты? Мне вспоминается прочтение абзаца Андерса Хейлсберга о нескольких пре...
02 мая '09 в 14:28
6

Почему методы интерфейса С# не объявлены абстрактными или виртуальными?

Методы С# в интерфейсах объявляются без использования ключевого слова virtual и переопределяются в производном классе без использования ключевого слова override. Есть ли причина для этого? Я предполагаю, что это просто удобство на языке, и, очевидн...
01 сент. '10 в 19:21
15

Виртуальные функции и производительность - С++

В моем классе я использую абстрактные классы и виртуальные функции. У меня было ощущение, что виртуальные функции влияют на производительность. Это правда? Но я думаю, что это различие в производительности не заметно и похоже, что я делаю преждевреме...
16 янв. '09 в 8:22
10

Какова стоимость выполнения виртуального метода в классе С++?

Наличие хотя бы одного виртуального метода в классе С++ (или любого из его родительских классов) означает, что класс будет иметь виртуальную таблицу, и каждый экземпляр будет иметь виртуальный указатель. Таким образом, стоимость памяти вполне понятн...
20 мар. '09 в 19:30