Связь между перегрузкой и ориентацией объекта

Существует ли связь между перегрузкой функций и ориентацией объектов в C ++?

И если да, то каково это отношение?

-1

Решение

Они связаны в том смысле, что одной из особенностей большинства объектно-ориентированных систем является своего рода полиморфизм, а перегрузка также обеспечивает форму полиморфизма (в частности, форму специального полиморфизма).

C ++ обеспечивает полиморфизм в основном тремя способами:

  • перегрузка (форма специального полиморфизма)
  • шаблоны (также форма специального полиморфизма)
  • наследование классов (форма полиморфизма подтипа из-за определения каждого класса как типа)

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

4

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

Это отдельные понятия.

Как уже упоминалось, перегрузка использует тип для определения функции.

Объектно-ориентированное программирование — это логическая организация данных и функций с помощью концепции моделируемой вещи — часто реальной вещи или ее абстракции.

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

3

Перегрузка функций связана с одной из самых глубоких идей в ориентации объекта: идея о том, что тип данных диктует, как ведет себя функция или оператор.

С этим связана идея перегрузки операторов. Оператор (такой как + или -) может быть применен к различным типам данных, и оператор будет делать правильные действия для задействованных типов.

Вы также можете написать операторские функции для своих собственных типов.

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

Компилятор C ++ выполняет различные низкоуровневые процедуры в зависимости от типов в выражении:

a + b

Если типы аргументов изменяются, компилятор генерирует разные инструкции.

Еще раз, идея глубоко укоренилась в объектной ориентации: тип задействованных данных диктует поведение функции.

Однако перегрузка не является полной реализацией этой идеи. Информация о типе может быть несовершенно известна во время компиляции. Вот где полиморфизм вступает в игру.

-1
По вопросам рекламы [email protected]