Как только вы поместите класс / функцию друга в данный класс (скажем, «класс») в любом месте .Он будет иметь доступ ко всем определенным членам класса (независимо от общего / частного / защищенного);например:
class aClass
{
public: int pub; void fun1() {}
protected: int pro; void fun2() {}
private: int pri; aClass(const aClass& o);
friend void outsider ();
};
Функция друга снаружи () может получить доступ к pub, pro, pri, fun1, fun2;но не конструктор копирования класса в этом случае (если он нигде не определен).