Обращаться к частным элементам одного класса из другого можно не только через интерфейсные функции, но и напрямую, путем объявления дружественных (friend) классов. В отличие от производных классов, которые позволяют обращаться к частным элементам базового класса, объявляя эти элементы защищенными (protected), классы-друзья не связаны друг с другом через аппарат наследования.
Для объявления класса-друга нужно в определении класса указать ключевое слово friend и имя дружественного класса, например:
class zp
{
private:
сhar name[64];
float sal;
public:
zp (char*, float) ;
void show_sal(void) ;
friend zpp;};
При таком определении объекты класса zpp могут напрямую обращаться к частным элементам класса zp.
Пример
#include<iostream.h>
#include<string.h>
Class zp
{private:
char name[64];
float sal;
public:{
zp (char *,float);
void show_sal(void);
friend zpp;};
zp::zp(char *new_name,float new_sal)
{strcpy(name, new__name);
sal=new_sal;}
void zp::show_sal(void)
{
cout<<"<<name«endl ; cout«"Оклaд: "<<sal«" рублей."«endl;}
Class zpp
{
public:
void change_sal(zp *,float);
float in_sal(zp);};
void zpp::change_sal(zp *n_zp,float new_sal)
{n__zp->sal=new_sal;}
float zpp::in_sal(zp n_zp)
{static float sal;
sal=n_zp.sal;
return(sal); }