«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Может ли полиморфизм существовать без указателей или ссылок?

Может ли полиморфизм существовать без указателей или ссылок?

Опубликовано в 2025-03-22
Просматривать:794

Can Polymorphism Exist Without Pointers or References?

полиморфизм без указателей и ссылок: A Myth

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

обманчивая роль распределения памяти

«Если вы выделяете память на куче, у вас есть динамическое связывание», можно подумать. Хотя это правда, простого распределения памяти недостаточно для полиморфизма. Возьмите пример:

Derived d;
Base* b = &d;

здесь, D находится в стеке, но полиморфизм легко работает на b. Это подчеркивает, что местоположение памяти не имеет значения для полиморфизма.

Semantics: ключ к полиморфизму

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

Base c = Derived();

, хотя C - это экземпляр базы, он не может проявлять полиморфное поведение, потому что он хранит нарезанную версию производного объекта Кормация, указатели обеспечивают дополнительную гибкость. Они позволяют указывать на объекты любого типа, включая базовые и производные классы. Напротив, ссылки могут связываться только с объектами конкретного типа, ограничивая их полиморфные возможности.

Заключение

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

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3