Kita semua tahu bahwa anggota pribadi dalam suatu kelas hanya dapat diakses oleh fungsi anggota di kelas tersebut dan tidak dapat diakses di luar kelas. Hal ini mencerminkan ide enkapsulasi dan penyembunyian desain kelas di C++, yang merupakan keunggulan paling mendasar dari C++.
Tetapi jika kadang-kadang kita benar-benar ingin mengakses anggota pribadi di luar kelas, itu akan menjadi lebih merepotkan, dan kita akan berada dalam dilema karena tidak dapat mengaksesnya atau menyatakan mereka sebagai tipe publik.
Munculnya teman dapat menyelesaikan masalah ini dengan sangat baik, yaitu dengan mendeklarasikan fungsi eksternal sebagai tipe teman dan memberinya hak untuk mengakses anggota privat di dalam kelas, maka dapat mencapai yang terbaik dari kedua dunia. Inilah arti persahabatan. Bisa juga dilihat dari arti harafiahnya, seperti “sahabat”, membuka saluran hijau.
Objek teman dapat berupa fungsi umum global atau fungsi anggota di kelas lain. Ini disebut fungsi teman . Tidak hanya itu, teman juga bisa menjadi kelas yang disebut dengan kelas teman .
Setelah sobat memahami pengertian dan fungsinya, mari kita simak cara menggunakannya di C++. Untuk fungsi teman, Anda hanya perlu mendeklarasikan fungsi tersebut di dalam kelas dan menambahkan kata kunci teman sebelumnya. Fungsi ini memiliki izin unik dan menjadi fungsi teman.
Hal terakhir yang perlu diperhatikan adalah teman tidak termasuk dalam kelas itu sendiri, baik itu fungsi teman atau kelas teman. Pointer this tidak dapat digunakan di dalam kelas, juga tidak dapat diwariskan, seperti halnya teman ayah belum tentu merupakan teman anak laki-laki.
Selanjutnya, kita menulis program untuk mencari jarak antara dua titik:
#include<iostream>#include<math.h>usingnamespacestd;classPoint{private:doublex;doubley;public:Point(doublea,doubleb){x=a;y=b;}intGetPoint(){cout<<(<< x<<,<<y<<);return0;}frienddoubleDistance(Titik&a,Titik&b);};//Cari jarak antara dua titik doubleDistance(Titik&a,Titik&b){doublexx;doubleyy;xx=ax-bx;yy = ay-by;returnsqrt(xx*xx+yy*yy);}intmain(){PointA(2.0,3.0);PointB(1.0,2.0);doubledis;dis=Jarak(A,B);cout<<dis < <endl;kembali0;}
Anda dapat mengamati bahwa fungsi yang mengimplementasikan jarak antara dua titik adalah fungsi umum eksternal. Karena kita perlu mengakses anggota pribadi di kelas, kita mendeklarasikannya sebagai tipe teman goreng di kelas, lihat baris terakhir di kelas Point. . Saat ini, kode dikompilasi tanpa masalah dan keluaran normalnya adalah:
Anda dapat melihat hasil tesnya, Anda dapat bereksperimen sendiri di komputer, cobalah untuk tidak menyatakannya sebagai tipe teman dan amati hasil kesalahannya.