Дружественные функции C++

C++ Программирование и разработка

C++

Функция — это блок кода, который выполняет определенную задачу и предоставляет выходные данные. В основном он используется для устранения повторяющегося кода. В этом руководстве мы рассмотрим функцию друга в C ++ и объясним ее концепцию на рабочих примерах.

Что такое функция друга?

Дружественная функция — это функция, не являющаяся членом, которая может обращаться к закрытым и защищенным членам класса. «Друг» — это ключевое слово, используемое для обозначения того, что функция является другом класса. Это позволяет компилятору знать, что конкретная функция является другом данного класса. Тогда функция друга должна иметь доступ к закрытому и защищенному члену данного класса. Без ключевого слова friend внешняя функция, не являющаяся членом, может получить доступ только к открытым членам класса.

Ключевые особенности функции друга

Вот ключевые особенности функции друга:

  1. Функция друга не входит в область действия класса.
  2. Функцию друга нельзя вызвать с помощью экземпляра класса.
  3. Он может получить доступ к членам с помощью оператора объекта и точки.

Синтаксис дружественной функции

Вот синтаксис функции друга:

class Class_Name_Demo
{
………………………………………
………………………………………

friend return_Type function_Name(arg_1, arg_2, …);
};

Пример функции друга

Теперь давайте рассмотрим пример программы, чтобы понять концепцию функции друга в C ++. В приведенном ниже примере программы у нас есть класс «Friend_Demo». Он имеет три разных типа данных: частные, защищенные и общедоступные.

Мы определили другую функцию, то есть «friendDemo_Func ()» вне области действия класса «Friend_Demo», и попытались получить доступ к членам (частным, защищенным и общедоступным) класса «Friend_Demo».

Но, как вы можете видеть в выводе ниже, когда мы компилируем программу, она выдает ошибки компиляции. Функция друга как раз решит эту проблему.

#include <iostream>
using namespace std;

class Friend_Demo
{
private:
int i_private;
protected:
int i_protected;
public:
int i_public;
};

void friendDemo_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();

return ;
}

Функция друга как раз решит эту проблему

В предыдущей программе мы получали ошибки компиляции при попытке доступа к закрытым, защищенным и общедоступным членам класса из функции, не являющейся членом. Это связано с тем, что функции, не являющейся членом, не разрешен доступ к закрытым и защищенным членам класса из-за пределов области действия класса.

Теперь, в этом примере, мы объявили функцию friendDemo_Func () как друга внутри области видимости класса, то есть «Friend_Demo»:

friend void friendDemo_Func();

Мы создали объект, то есть «fd» класса «Friend_Demo» внутри функции «friendDemo_Func ()». Теперь мы можем получить доступ к закрытым, защищенным и общедоступным членам класса «Friend_Demo» с помощью оператора точки. Мы присвоили 10, 15 и 20 значениям i_private, i_protected и i_public соответственно.

Как вы можете видеть в выводе ниже, эта программа теперь компилируется и выполняется без каких-либо ошибок и выводит результат, как ожидалось.

#include <iostream>
using namespace std;

class Friend_Demo
{
private:
int i_private;
protected:
int i_protected;
public:
int i_public;
friend void friendDemo_Func();
};

void friendDemo_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();

return ;
}

Как вы можете видеть в выводе ниже, эта программа теперь компилируется

Заключение

В этой статье я объяснил концепцию функции друга в C ++. Я также показал два рабочих примера, чтобы объяснить, как функция друга ведет себя в C ++. Иногда функция друга может быть очень полезной в сложной среде программирования. Однако программисту следует быть осторожным, не злоупотребляя им и не ставя под угрозу его функции ООП.ции ООП.

Оцените статью
bestprogrammer.ru
Добавить комментарий