виртуальные функции — C ++, исключающий динамическую диспетчеризацию в производных классах с использованием ключевого слова

В следующем примере я буду использовать динамическую диспетчеризацию для вызова виртуальных функций?

struct Base{
virtual double fn(){return 3.2;}
};
struct Deri1 : public Base{
using Base::fn;
}
struct Deri2 : public Base{
virtual double fn(){return 4.6;}
}

Классы, которые я реализую, содержат гораздо больше информации, но есть некоторые, которые я хочу оставить по умолчанию для некоторых производных классов, но переопределить в других, примером может служить fn () в приведенном выше коде. По сути, я просто использую базовый класс, чтобы избежать перезаписи fn () каждый раз, когда он не переопределяется. Это правильный путь?

Спасибо!

1

Решение

Можно избежать динамической отправки, избегая ключевого слова virtual в определении функции, до тех пор, пока один не использует указатели, как объяснено в этом ссылка на сайт.

Это создает некоторые сложности с общими методами и полиморфизмом. Если кто-то использует динамический полиморфизм, он передал бы указатель на базовый класс методу, и в этом случае ключевое слово «virtual» необходимо для указателя, чтобы определить, какой метод использовать. Можно определить статический полиморфный метод, используя шаблоны, как объяснено в следующем ссылка на сайт.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector