friend C++ дружественная функция имеющая доступ к закрытым членам класса

Ключевое слово friend позволяет определить дружественную функцию, которая не являясь членом класса имеет доступ к его приватным или защищенным членам.


#include <iostream> // std::cout
using namespace std;
class Point{
    int x = 0; // Приватная координата х
    int y = 0; // Приватная координата у
    friend void set_point(Point& pt, int a, int b); // Объявляем дружественную функцию
public:
    void print(){   // Функция выводит координаты точки
        cout << x << ", " << y << endl;
    }
};

void set_point(Point& pt, int a, int b){
    pt.x = a; // Задаем значения приватной переменной x класса Point
    pt.y = b; // Задаем значения приватной переменной y класса Point
}

int main(){
    Point pt;   // Создаем объект pt класса Point
    pt.print(); //0, 0 Выводим значения х и у
    set_point(pt, 13, 7); // Вызываем функцию с объектом pt и коррдинтами точки
    pt.print(); //13, 7 Дружественная функция set_poing (не член класса) изменила приватные члены х и у
}
2023-10-22



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

Конструктор в C++. Конструктор копирования и оператор присваивания.
delete C++ оператор освобождения памяти и спецификатор ограничения доступа
explicit С++ запрет неявных преобразования при вызове конструктора
friend C++ дружественная функция имеющая доступ к закрытым членам класса
mutable C++ изменение членов константного объекта
new C++ динамическое выделение памяти
private С++, С++ приватные члены класса, С++ закрыты члены класса
protected C++ указание защищенных членов класса
public С++, С++ открытые члены класса
struct С++ структура
this C++ указатель на текущий объект класса
virtual C++ виртуальные функции