Dalam C++, sebuah kelas (A) atau fungsi (F) dapat menjadi friend dari kelas lain (B). Dalam keadaan biasa, kelas A maupun fungsi F tidak dapat mengakses anggota (data/fungsi) non public milik B. Dengan adanya hubungan friend ini, A dan F dapat mengakses anggota non public dari B. Deklarasi friend dituliskan dari pihak yang memberikan ijin. Pemberian ijin ini tidak bersifat dua arah, yang berarti dalam kode berikut, kelas B tidak memiliki hak untuk mengaskses anggota non-public dari kelas

A. Dalam contoh ini, realisasinya adalah:

class B { // kelas “pemberi ijin”
friend class A;
friend void F (int, char *);

private:
// …
public:
//…
};

Fungsi yang dideklarasikan dengan atribut friend merupakan fungsi di luar kelas sehingga objek parameter aktual mungkin dilewatkan secara call-by-value. Akibatnya operasi yang dilakukan terhadap objek bukanlah objek semula, melainkan salinan dari objek tersebut. Fungsi anggota merupakan fungsi di dalam kelas dan operasi yang dilakukannya selalu berpengaruh pada objek sesungguhnya. Kriteria penggunaan atribut friend:
• Sedapat mungkin hindari penggunaan friend. Penggunaan friend di antara kelas menunjukkan perancangan kelas yang kurang baik. Jika kelas A menjadikan kelas B sebagai friend maka kemungkinan besar kelas A dan B seharusnya tidak dipisahkan
• Jika operasi yang dijalankan oleh sebuah fungsi friend mengubah status dari objek, operasi tersebut harus diimplementasikan sebagai fungsi anggota

NB :

Referensi :

1.[Ellis and Stroustrup, 1990] Ellis, M. and Stroustrup, B. (1990). The Annotated C++ Re-ference Manual.
2.Addison-Wesley, Reading, MA. [Lippman, 1991] Lippman, S. (1991). C++ Primer. 2nd Edition. Addison-Welsy, Reading, MA.