Переопределение - это «нормальная вещь» в ООП: производный класс предоставляет другую (то есть более специализированную) реализацию для чего-то, переопределяя базовый класс, например, apple::foo()
переопределяет fruit::foo()
, если яблококласс, полученный из фруктов.(не путать с перегрузкой при использовании разных сигнатур параметров, что приводит к совершенно разным функциям).
Перезаписать Я знаю, как полностью заменить на другое определение,Не на определенном уровне, но в целом для остальной части программы.Иногда используется javascript, если у большого фреймворка есть какие-то особые проблемы, и вы не хотите разбивать большой файл на части:
<script type="text/javascript"
src="some super big framework, often in one big file">
<script type="text/javascript">
Ext.ux.window.createWin = function() {
// completely OVERWRITE the implementation
(often to 'hotfix' a particular bug)
}
</script>
Однако: я не знаю ничего подобного в C ++, поскольку одновременное переопределение функции всегда приводит к ошибкам уже во время компиляции.В лучшем случае я могу отображать указатели на функции изгиба или (пере) определять перехваты обратного вызова.