Подтвердить что ты не робот

Функции друга в С++

У меня есть сомнения, связанные с функциями друга в С++. Функция Friend не является функцией члена claas и может быть вызвана непосредственно из основного. Итак, какая разница, если мы сохраняем функцию friend внутри private или public части class. Обычно я замечал, что функции friend всегда находятся в общественной роли. В каком сценарии мы должны сохранить функцию friend в private.

4b9b3361

Ответ 1

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

Ответ 2

Не имеет значения, объявите ли вы его в части public: или private: класса. Он будет работать одинаково независимо.

Ответ 3

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

Кроме этого, нет никакой разницы.

Ответ 4

Ключевое слово friend находится здесь, чтобы предоставить private доступ к другой функции, которая не является частью вашего класса. Поскольку он не является частью вашего класса, он не зависит от спецификаторов public/private.

Ответ 5

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

Вот хороший пример и объяснение от www.cprogramming.com:

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