Если это где-то написано, было бы хорошо увидеть
Вроде нарушает принципы ООП и SOLID?
Логично, спасибо
Прям не С++, а 5 А класс)))
С чего бы?
Ну смотри) представь как бы это читал простой человек) «не рекомендуется заводить друзей класса»
Всё можно
auto_ptr пользоваться можно?
Ну вот, а как же всё(
Я про friend отвечал
Ну можно-то да, но не рекомендуется?
Это инструмент, который можно использовать. Тут вопрос рекомендаций не стоит
Маллоком тоже можно пользоваться. Не совсем понимаю ответ. Не считается никогда плохим тоном использовать дружественные функции?
нет, не считается, если использовать правильно и по назначению
Нет никакого нарушения
Ну там доступ к приватным полям? Я так поняла ответ человека выше
И что что доступ к приватным полям? Где нарушение?
Мм, инкапсуляции, наверно...
Нет нарушения инкапсуляции точно так же как нет нарушение инкапсуляции в объявлении публичной статической функции (внутри которой можно менять поля внезапно)
Инкапсуляция и SO в солиде
набор слов, нарушения пока не вижу
использовать плохо нельзя, использовать хорошо - можно
Так про всё можно сказать
Инкапсуляция точно, т.к. это нарушение области видимости для внешнего класса/метода. O - нарушение в том, что friend может модифицировать данные внутри класса, не являясь методом самого класса.
ну да, в этом и смысл
> что friend может модифицировать данные внутри класса, не являясь методом самого класса. Нет в этом ничего плохого
Не рекомендуется заводить друзей тогда когда можно без них обойтись. Когда нельзя - ничего в них плохого нет.
Что ещё за солид?
ИК "Солид", ё-моё.🤣🤣🤣
Инкапсуляция -не святая корова, примерно в чуть меньше чем в половине ООП языков вообще нет инкапсуляции. И ничего, живут как-то.
Так про все и НУЖНО сказать.
Я просто там работал...
Можно только осторожно и в крайних случаях
Не живи догмами, живи здравым смыслом. Если тебе надо реализовать оператор того же вывода в поток, ты геттеры будешь юзать? Нет, friend. А почему это нормально? А потому что оператор относится к интерфейсу твоего класса (часть его интерфейса) и имеет право знать о его внутреннем устройстве.
Да, спасибо вам всем за ответы. Понятно, с оператором ввода/вывода иначе не получится, просто хотелось услышать мнение опытным разработчиков. Ведь есть практики, которые лучше применять, и те, которые не стоит. Понятно, что у каждой своё назначение
Обсуждают сегодня