friend
 
קיימת דרך אחת לבנות יוצא דופן למגבלות הגישה.
נתבונן במחלקה הבאה, שבה כל הנתונים הם private:

class A {
private:
 int b;
 int c;
public:
 A();
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

ונניח שיש פונקציות מסוימות, שאינן פונקציות חבר במחלקה, שלהן נרצה לאפשר בכל זאת גישה לנתונים, ועדיין למנוע את הגישה מכל האחרים.
עושים זאת בצורה הבאה:

class A {
private:
 int b;
 int c;
public:
 A();
 friend int Sample(int d);
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

המילה friend מציינת שהפונקציה אינה חלק מהמחלקה, אך יש לה גישה מלאה לכל הנתונים, כאילו היא חלק ממנה.
ניתן גם להצהיר על מחלקה כ-friend בצורה הבאה:

class A {
private:
 int b;
 int c;
public:
 A();
 friend class B;
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

כמו פונקצית friend, גם מחלקת ה-friend יכולה לגשת לכל משתני המחלקה והפונקציות המוגדרות כ-private במחלקה בה היא מוגדרת כ-friend.