Вы можете воспользоваться любым из следующих способов, чтобы узнать подробности конфигурации вашей карты.
Метод 1:
Метод2:
Метод3:
Это - Невиртуальная Интерфейсная Идиома (NVI). Та страница Herb Sutter имеет хороший бит детали об этом. Однако умерьте то, что Вы читаете там с тем, что Облегченный FAQ C++ говорит здесь и здесь.
Основное преимущество NVI разделяет интерфейс от реализации. Базовый класс может реализовать универсальный алгоритм и представить его миру, в то время как его подклассы могут реализовать детали алгоритма через виртуальные функции. Внешние пользователи экранируются от изменений в деталях алгоритма, особенно если Вы позже решаете, что хотите сделать, добавляют пред - и выполняющий последующую обработку код.
Очевидный недостаток - то, что необходимо написать дополнительный код. Кроме того, private
виртуальные функции сбивают с толку много людей. Многие кодеры по ошибке думают, что Вы не можете переопределить их. Herb Sutter, кажется, нравится private
virtuals, но по моему скромному мнению более эффективно на практике следовать рекомендации Lite FAQ C++ и сделать их protected
.
Это часто называет парой Шаблонного Рычага (иначе Горячая точка), выдумывает Wolfgang Pree.
Посмотрите этот PDF, PowerPoint, HTML
Одна причина того, чтобы сделать косвенность, как Вы называете его, состоит в том, что вещи часто могут/, чтобы быть установкой, предшествующей метод, и некоторые cleaing отправляют вызов метода. В подклассах только необходимо предоставить необходимое поведение, не делая установки и очистки...
Если подкласс мог бы изменить определение нечто _?, но потребителям была нужна статическая функция (для эффективности)? Или для шаблона делегации?
Это - шаблонный шаблон. Метод нечто содержит код, который должен быть выполнен всеми подклассами. Это имеет больше смысла при рассмотрении его как это:
class Bar {
public:
bool foo(int i) {
// Setup / initialization / error checking / input validation etc
// that must be done for all subclasses
return foo_(i);
}
private:
virtual bool foo_(int i) = 0;
};
Это более хорошо, чем альтернатива, которая должна попытаться не забыть называть общий код в каждом подклассе индивидуально. Неизбежно, кто-то делает подкласс, но забывает называть общий код, приводящий к любому количеству проблем.