Существует абстрактный класс A, который имеет чистую виртуальную функцию-член func(). Существует большое количество производных классов, каждый из которых имеет различную реализацию функции func().Код, разделяемый между виртуальными функциями
Представьте себе, что вы хотите добавить дополнительную задачу, которая будет выполняться при каждом вызове функции func(), скажем, cout << "hello world";
независимо от производного класса. Задача также не зависит от содержимого func(), поэтому ее можно было выполнить до, после или даже в середине функции func(), только тот факт, что она запускается после каждого вызова функции func().
Предоставляет ли C++ (11) разумный способ сделать это?
Самое лучшее, что приходит мне на ум, это написать метод pre-func() в родительском классе, в котором реализована задача, и скопировать вызов pre-func() в начале всей функции func() реализации в производных классах. Что-нибудь лучше?
Что вы описываете, называется «Template Method». http://en.wikipedia.org/wiki/Template_method_pattern –
@AdamBurry Спасибо, я был уверен, что это не может быть в первый раз в истории, когда эта проблема появляется :) – DarioP