Разница между функцией друга и классом друга

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 13 Май 2024
Anonim
Урок 26 - Функция друг класса(Детальное рассмотрение)
Видео: Урок 26 - Функция друг класса(Детальное рассмотрение)

Содержание


Функция Friend и класс Friend - это методы, используемые для доступа к закрытым членам класса с помощью ключевого слова friend. Общее различие между функцией-другом и классом-другом заключается в том, что при использовании функции-друга можно получить доступ к частным членам класса, но в классе-другом доступны только имена класса-друга, а не частные члены класса.

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

Эта функция друга не является ни коммутативной и ни переходный, X - друг Y, не означает, что Y - также друг X. Если X - друг Y, а Y - друг Z, это не означает, что X - друг Z.


    1. Сравнительная таблица
    2. Определение
    3. Ключевые отличия
    4. Вывод

Сравнительная таблица

Основа для сравненияФункция другаДруг класс
основнойЭто функция, используемая с ключевым словом friend для предоставления доступа к частным членам класса, не являющимся членами функции.Это класс, используемый с ключевым словом friend для доступа к закрытым членам другого класса.
Форвардная декларацияНеобходимо использовать.Не обязательно.
использованиеДругую функцию можно использовать в некоторых ситуациях перегрузки оператора.Класс друга может использоваться, когда класс создается поверх другого класса.

Определение функции друга

функция друга используется для доступа к закрытым и защищенным членам класса, позволяя функции, не являющейся членом, получить доступ. В этом типе функции ключевое слово friend используется перед именем функции во время объявления. Есть некоторые ограничительные условия, применяемые к функции друга. Первое условие - функция друга не наследуется дочерним классом. Второе условие заключается в том, что спецификатор класса хранения может отсутствовать в функции Friend, что означает, что он не может быть объявлен как static и extern.


Функция Friend не вызывается с вызывающим объектом класса. Примеры функции-друга: глобальная функция, функция-член класса, шаблон функции может быть функцией-другом. Давайте разберемся с помощью примера.

#включают использование пространства имен std; class first {int data; public: first (int i): data (i) {} показ друга void (const first & a); }; void display (const first & a) {cout << "data =" <используя пространство имен std; class First {// Объявить друга class друг class Second; public: First (): a (0) {} void () {cout << "Результат" << a << endl; } private: int a; }; class Second {public: void change (First & yclass, int x) {yclass.a = x; }}; int main () Первый obj1; Второй объект2; obj1 (). obj2.change (obj1, 5); obj1 (). // Вывод Результат 0 Результат 5

  1. Функция Friend - это функция, которая может получить доступ к закрытым и защищенным членам класса. Напротив, класс друга - это класс, который помогает в доступе к закрытым членам класса.
  2. Функция друга объявляется включением ее прототипа внутри класса, предшествующего ему с ключевым словом friend. Аналогично, класс друга также определяется с помощью ключевого слова friend.
  3. Форвардное объявление используется в случае дружественной функции, в отличие от него, нет необходимости использовать его в другом классе.

Заключение

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