@heartdevil
плыву как воздушный шарик

Нарушают ли указатели и разименование в c++ принципы ООП?

Объясните, плиз, верно ли то, что указатели и разименование в c++ нарушают принципы ООП (инкапсуляция, наследование, полиморфизм)?

На мой взгляд, одно с другим не применимо. Ну или применимо, но в "изолированных местах".

Я не спец ни в том ни в этом :), просто возник вопрос.
  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Не будем встревать в холивар «должен ли указатель быть объектом». Примем, что указатель — простейший тип, ради совместимости и эффективности.
К простейшему типу инкапсуляция и наследование неприменимы.
А вот для полиморфизма указатели очень нужны. Динамический полиморфизм — это когда под одним фасадом могут оказаться разные объекты.
1. По копии их передавать невозможно, только по указателю/ссылке.
2. Их нельзя уничтожать под одну гребёнку. А значит, если мы их передаём в чьё-то другое владение, надо удостовериться, что они созданы в «куче» и у «фасада» есть виртуальный деструктор.

Есть ещё два принципа ООП — абстракция и принцип Лисков. Первый имеет отношение к указателям постольку, поскольку есть полиморфизм. Второй — гугли «ковариантные/контравариантные указатели».
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Нет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы