Справочник по C/C++
Дружественные функции

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

friend прототип_функции
Например, в следующих классах функция myfunc(), которая не входит в состав классов, являться дружественной по отношению этих классов.
class myclass2;		//предварительное объявление класса myclass2;
class myclass1{
	int x;
public:
	friend void myfunc(myclass1 c1, myclass2 c2, int val);
};

class myclass2{
	int y
public:
	friend void myfunc(myclass1 c1, myclass2 c2, int val);
};

void myfunc(myclass1 c1, myclass2 c2, int val){
	c1.x=val;
	c2.y=val;
};

myclass1 c1;
myclass2 c2;
myfunc(c1, c2, 2);	/*устанавливаем значение приватным переменным x и y
			объектов c1 и c2 соответственно, значение 2*/

Дружественная функция может быть не только внешняя, но и функция - член другого класса.

class my2;
class my1{
	int x;
public:
	set(my2 c){
		my2.y = x;
	}
};
class my2{
	int y;
public:
	friend int my1::set(my2 c);
};

my1 m1; my2 m2;
m1.set(m2);		/*устанавливаем приватную переменную y класса m2
			значением приватной переменной x класса m1*/

Дружественные классы

При объявлении класса можно объявить сразу все функции-члены другого класса дружественными одним объявлением. Например.

class X{...};
class Y{
public:
	friend class X;
};






Нет комментариев.



Оставить комментарий:
Ваше Имя:
Email:
Антибот:  
Ваш комментарий: