Должен ли я отказаться от использования абстрактных базовых классов/интерфейсов и вместо этого использовать boost::function/std::function?

Я только что узнал о том, что на самом деле представляет собой std::function и для чего он используется, и у меня есть вопрос: теперь, когда у нас по существу есть делегаты, где и когда мы должны использовать абстрактные базовые классы, а когда вместо этого мы следует реализовать полиморфизм через объекты std::function, передаваемые в общий класс? Получил ли ABC смертельный удар в C++11?

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

12
задан Doug T. 7 March 2012 в 17:57
поделиться