virtual-functions- все статьи тега ➜ страница 0


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

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

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

с определением структуры, приведенным ниже... struct A { virtual void hello() = 0; }; подход #1: struct B : public A { virtual void hello() { ... } }; подход #2: struct B : public A { void hello() { ... } }; есть ли разница между этими двумя способами переопределения функции hello? ...

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

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

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

у меня есть базовый класс с виртуальной функцией, и я хочу, чтобы переопределить функцию в производном классе. Есть ли способ заставить компилятор проверить, действительно ли функция, объявленная в производном классе, переопределяет функцию в базовом классе? Я хотел бы добавить какой-то макрос или что-то, что гарантирует, что я случайно не объявлю новую функцию вместо переопределения старой. рассмотрим пример: class parent { public: virtual void handle_event(int something) const { // bor ...

Как реализуются виртуальные функции и vtable?

мы все знаем, что виртуальные функции в C++, но как они реализуются на более глубоком уровне? можно ли изменить таблицу vtable или даже получить к ней прямой доступ во время выполнения? существует ли vtable для всех классов или только для тех, которые имеют хотя бы одну виртуальную функцию? абстрактные классы просто имеют значение NULL для указателя функции хотя бы одной записи? наличие одной виртуальной функции замедляет весь класс? Или только вызов функции, которая является виртуальной? ...

Когда не следует использовать виртуальные деструкторы?

есть ли когда-нибудь веская причина не объявить виртуальный деструктор для класса? Когда вы должны специально избегать его написания? ...