Дружественные функции

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

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

class myclass2{
	int y
public:
	frinde 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;
};


Спортивные костюмы белые на своей страничке
Производство спортивной одежды. Онлайн-продажа спортивной формы
vvb.com.ua