Что такое функция друга?
Функция друга - это функция, не являющаяся членом, которая может получить доступ к закрытым и защищенным членам класса. «Друг» - это ключевое слово, используемое для обозначения того, что функция является другом класса. Это позволяет компилятору знать, что конкретная функция является другом данного класса. Тогда функция друга должна иметь доступ к закрытому и защищенному члену данного класса. Без ключевого слова friend внешняя функция, не являющаяся членом, может получить доступ только к открытым членам класса.
Ключевые особенности функции друга:
Вот ключевые особенности функции друга:
- Функция друга не входит в область действия класса.
- Функцию друга нельзя вызвать с помощью экземпляра класса.
- Он может получить доступ к членам с помощью оператора объекта и точки.
Синтаксис дружественной функции:
Вот синтаксис функции друга:
класс Class_Name_Demo…
…
друг return_Type function_Name (arg_1, arg_2,…);
;
Пример функции друга:
Теперь давайте рассмотрим пример программы, чтобы понять концепцию функции друга в C++. В приведенном ниже примере программы у нас есть класс «Friend_Demo». Он имеет три разных типа элементов данных, я.е., частный, защищенный и общедоступный.
Мы определили другую функцию, i.е., «FriendDemo_Func ()» выходит за рамки класса «Friend_Demo» и пытается получить доступ к членам (частным, защищенным и общедоступным) класса «Friend_Demo».
Но, как вы можете видеть в выводе ниже, когда мы компилируем программу, она выдает ошибки компиляции. Функция друга как раз решит эту проблему.
#включатьиспользуя пространство имен std;
класс Friend_Demo
частный:
int i_private;
защищено:
int i_protected;
общественность:
int i_public;
;
недействительный другDemo_Func ()
Friend_Demo fd;
fd.i_private = 10;
fd.i_protected = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
возврат 0;
В предыдущей программе мы получали ошибки компиляции при попытке доступа к закрытым, защищенным и общедоступным членам класса из функции, не являющейся членом. Это связано с тем, что функции, не являющейся членом, не разрешен доступ к закрытым и защищенным членам класса за пределами области действия класса.
Теперь, в этом примере, мы объявили функцию friendDemo_Func () как друга внутри области видимости класса, i.е., «Friend_Demo»:
друг void friendDemo_Func ();Мы создали объект, я.е., «Fd» класса «Friend_Demo» внутри функции «friendDemo_Func ()». Теперь мы можем получить доступ к закрытым, защищенным и общедоступным членам класса «Friend_Demo» с помощью оператора точки. Мы присвоили 10, 15 и 20 значениям i_private, i_protected и i_public соответственно.
Как вы можете видеть в выводе ниже, эта программа теперь компилируется и выполняется без каких-либо ошибок и выводит результат, как ожидалось.
#включатьиспользуя пространство имен std;
класс Friend_Demo
частный:
int i_private;
защищено:
int i_protected;
общественность:
int i_public;
друг void friendDemo_Func ();
;
недействительный другDemo_Func ()
Friend_Demo fd;
fd.i_private = 10;
fd.i_protected = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
возврат 0;
Заключение:
В этой статье я объяснил концепцию функции друга в C++. Я также показал два рабочих примера, чтобы объяснить, как функция друга ведет себя в C++. Иногда функция друга может быть очень полезна в сложной среде программирования. Однако программисту следует быть осторожным, не злоупотребляя им и не ставя под угрозу его функции ООП.