Программирование и основы алгоритмизации. Макаров В.Л. - 122 стр.

UptoLike

Составители: 

122
16.5. Дружественные функции и дружественные классы
Дружественные функции класса определяются вне области действия этого
класса, но имеют право доступа к закрытым элементам (private и protected)
данного класса. Функция или класс в целом могут быть объявлены другом
(friend) другого класса. Чтобы объявить функцию как друга класса, перед ее
прототипом в описании класса ставится ключевое слово friend, а
объявление
записывается в форме friend ClassTwo в определении класса ClassOne. Про-
грамма на рис. 16.10 демонстрирует объявление и использование дружествен-
ной функции setX для установки закрытого элемента данных x класса count.
Объявление friend появляется первым в объявлении класса, даже раньше объ-
явления закрытых функций-элементов.
//Пример использования дружественных функций
#include <iostream .h>
class Count {
friend void setX(Count &, int); //объявление дpуга
public:
Count() { x = 0; } // конструктор
void print() const {cout << x << endl; } // вывод
private :
int x; // элемент данных
};
void setX(count &c, int val)
{
c.x = val;
}
main ()
{
count object;
cout << “object.x после своего создания :”;
object.print();
cout << “object.x после вызова дружественной функции setX:”;
setX(object, 8); //
object.print();
return 0;
}___________
____________________________________________________
object.x после своего создания: 0
object.x после вызова дружественной функции setX: 8
Рис. 16.10