ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 11) онлайн
Дружественные классы
Методы могут быть превращены в дружественные функции одновременно с оп-
ределением всего класса как дружественного. Программа FRICLASS показывает,
как это выглядит на практике.
Листинг 11.14. Программа FRICLASS
// friclass.cpp
// Дружественные классы
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////
class alpha
{
private:
int data1;
public:
alpha() : data1(99) { } //конструктор
friend class beta; //beta – дружественный класс
};
///////////////////////////////////////////////////////////
class beta
{ //все методы имеют доступ
public: //к скрытым данным alpha
void func1(alpha a) { cout << "\ndata1=" << a.data1;}
void func2(alpha a) { cout << "\ndata1=" << a.data1;}
};
///////////////////////////////////////////////////////////
int main()
{
alpha a;
beta b;
b.func1(a);
b.func2(a);
cout << endl;
return 0;
}
Для класса alpha весь класс beta провозглашен дружественным. Теперь все
методы beta имеют доступ к скрытым данным класса alpha (в данной программе
это лишь единственная переменная data1).
Обратите внимание: мы объявляем именно класс дружественным, используя
выражение
friend class beta;
А можно было сделать и так: сначала объявить обычный класс beta:
class beta
затем объявить класс alpha, а внутри определения alpha объявить дружествен-
ность класса beta:
friend beta;
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Схожі підручники
- САМОСТІЙНІ РОБОТИ З КУРСУ «ЕКОЛОГІЯ»
- Страхові послуги (частина 3)
- Світовий ринок послуг онлайн (частина 1)
- Стан НПС та основні напрями природоохоронної політики Чехії управлінські, організаційні, економічні та юридичні аспекти
- Поймай меня, если сможешь (онлайн)
- Загальні питання з курсу «Регіональна економіка»
