Зачем нам нужны функции FRIEND в C ++?

6 Ответы


  • В основном функции 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.
    Для частных данных недоступны функции, не являющиеся членами, или внешние классы.

Напишите свой ответ

Ваш ответ появится после модерации