Язык С++ и программирование на нем. Рейзлин В.И. - 96 стр.

UptoLike

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

98
double triang::midx (){ return (vert1.x+vert2.x+vert3.x)/3;}
и аналогично triang::midy (), triang::midz ().
Для того чтобы компилятор не выдал сообщение об ошибке, не-
обходимо добавить в объявление класса coord, в любой его части, сле-
дующие объявления:
class coord {
friend triang::midx ();
friend triang::midy ();
friend triang::midz ();
}
Достаточно распространенным является случай, когда все функ-
ции-члены одного класса являются привилегированными в другом; пре-
дусмотрена даже упрощённая форма записи:
class coord {…
friend triang;
};
или
class coord {…
friend class triang;
};
В этом случае говорят, что класс triang является дружественным
классу coord.
Заметим, что для дружественных функций не определён указатель
this, они не имеют неявных аргументов, для них не определены уровни
доступа. Одна и та же функция может быть объявлена привилегирован-
ной сразу в нескольких классах.
Разницу в способе использования функций-членов и дружествен-
ных функций покажем в следующем примере:
class cl {int numb;
// f_func () не личный член класса, хотя объявляется в private-
части.
friend void f_func (cl*, int);
public: