Адель
В основном функции Friend могут быть введены в C ++ для обработки некоторых конкретных задач, связанных с объектами класса.
В C ++ мы знаем, что к закрытым членам нельзя получить доступ из внешнего класса.
То есть функция, не являющаяся членом, не может иметь доступа к закрытым данным класса.
Однако может возникнуть ситуация, когда мы захотим, чтобы два класса совместно использовали определенную функцию.
Например, рассмотрим случай, когда определены два класса: менеджер и ученый.
Мы хотели бы использовать функцию yield_ tax () для работы с объектами обоих этих классов.
В такой ситуации C ++ позволяет сделать общую функцию дружественной к обоим классам. Такая функция не обязательно должна быть членом какого-либо из этих классов.
Чтобы сделать внешнюю функцию дружественной к классу, мы должны просто объявить эту функцию как друга класса, как показано ниже:
Class ABC
{
………
..
Public:
…… ..
…… ..
Friend void xyz (void) ; // объявление
};
Этому объявлению функции должно предшествовать ключевое слово friend.
Функция определяется в другом месте программы, как обычная функция C ++.
Определение функции не использует ни ключевое слово friend, ни оператор области видимости ::
Функции, объявленные с помощью ключевого слова friend, известны как функция друга.
Функцию можно объявить как друга в любом количестве классов.
Функция друга, хотя и не является функцией-членом, имеет полные права доступа к закрытым членам класса.
Бруклин
-> Функция Friend обычно используется для доступа к закрытому члену класса. -> С помощью функции Friend мы можем получить доступ к другому объекту класса. -> При перегрузке оператора с помощью функции друга мы можем использовать аргумент примитивного типа данных и пользователь определяет аргумент в одной функции .-> Это не функция-член класса .-> Когда мы хотим сложение, вычитание ... В другом классе мы можем легко использовать функцию друга.
Дороти
Дружественные функции необходимы для наведения мостов между классами и предоставления разрешения нормальной функции доступа к частным данным класса.
Аннабель
Jigar,
(a) Скажем, в классе «A» вы объявляете функцию «Fb» дружественной функцией. Вам тогда нужно определить функцию «Fb» в том же классе «A» / том же файле?
(б) Если ответ на (а) положительный, то чем отличаются функция-член и функция-член? Функция «Fb» также могла быть объявлена как функция-член. Какая разница, чтобы определить его как функцию друга или функцию-член?
(c) есть ли недостатки у функций друзей?
Спасибо
ак
Ларон
Дружественные функции не являются функциями-членами, которым предшествует ключевое слово «друг». Он используется для доступа к членам класса, не являющегося функцией-членом.
Кайла
Очевидно, что для доступа к приватным переменным необходима функция Friend.
Для частных данных недоступны функции, не являющиеся членами, или внешние классы.