* Другие компоненты класса X */ II class Y { void fyl(int, int); int fy2( char*, int); /* Другие компоненты класса Y */ t Дружественной может быть и функция, не являющаяся компонентой какого-либо класса, например, class XX { friend int printXX (); /* Другие компоненты класса XX */ } Здесь функция printXX имеет доступ ко всем компонентам класса XX, независимо от закрепленного за ними уровня доступа. Правило. Ключевое слово friend - спецификатор функции, который дает функции- не члену класса доступ к скрытым членам класса. Он используется для того, чтобы выйти за строгие рамки типизации и сокрытия данных в C++. Объявление friend функции должно появляться внутри объявления класса, которому она дружественна. Имени функции предшествует ключевое слово friend, и ее объявление может находится как в public так и в private части класса, что не повлияет на значение. Функция-член одного класса может быть friend-функцией другого класса Если все функции- члены одного класса являются friend-функциями другого класса, то эго можно определить записью: freind class имя класса class tl { friend void a(); // friend-функция int b(); // функция-член ) • I > class t2 { friend int tl::b(); // функция-член класса tl имеет доступ ко всем скрытым полям класса t2 }; class t3 {
RkJQdWJsaXNoZXIy MTExODQxMg==