Fungsi Friend Dalam bahasa C++ kita dapat membuat suatu fungsi yang berada di luar kelas (class) dan dapat meng-ak-ses bagian private suatu kelas. Fungsi tersebut dinamakan sebagai friend function, dan untuk men-deklarasi-kannya adalah sama seperti fungsi-fungsi biasa lainnya. Pen-deklarasi-an dilakukan di dalam kelas yang ber-sangkutan dengan menggunakan kata kunci friend.
Fungsi Friend Sebagai contoh dapat dilihat pada program berikut ini, // Kuliah Pemrograman Bahasa C++ // ============================== #include <iostream> class Contoh_Friend{ private: int X, Y; public: void Set_Dikali_dan_Pengali(int dikali, int pengali) { X = dikali; Y = pengali; } friend int Perkalian(Contoh_Friend Matematika_Perkalian); };
Fungsi Friend // Mendefinisikan fungsi Perkalian yang bukan termasuk member function // dari kelas Contoh_Friend int Perkalian(Contoh_Friend Matematika_Perkalian) { // Mengakses bagian private secara langsung dari kelas Contoh_Friend return(Matematika_Perkalian.X * Matematika_Perkalian.Y); } // Fungsi utama int main() { // Melakukan instansiasi kelas CONTOH Contoh_Friend Perkalian_Dua_Bilangan; // Mengeset nilai X=20 dan Y=3 Perkalian_Dua_Bilangan.Set_Dikali_dan_Pengali (20, 3); cout<<"Hasil kali : "<<Perkalian(Perkalian_Dua_Bilangan); // Program selesai return 0;
Fungsi Friend Bila program tersebut di-run maka hasil yang akan terlihat di monitor komputer adalah, Hasil kali : 60 Seperti yang kita lihat pada program bahwa fungsi Perkalian(Contoh_Friend Matematika_Perkalian) bukan merupakan anggota dari kelas Contoh_Friend namun tetap dapat meng-akses bagian private khu-susnya variabel X dan Y. Hal inilah yang dimaksud sebagai teman atau friend dari kelas Contoh_Friend.
Fungsi Friend Selain ada fungsi friend, dalam C++ juga dikenal friend class dan sifatnya dapat meng-akses semua je-nis data, termasuk private, dari kelas lain sekalipun kedua kelas tersebut tidak ada hubungan turunan sa-ma sekali. Bentuk program yang menggunakan friend class ini hampir mirip deklarasi-nya dengan function class, dan bentuknya dapat dilihat berikut ini,
Fungsi Friend // Mudah & Cepat Menjadi MASTER C++ #include <iostream> class Pertama{ private: int X, Y; public: void Set_Dikali_dan_Pengali(int dikali, int pengali) { X = dikali; Y = pengali; } friend class Kedua; // Mendeklarasikan sebuah friend class }; // Definisi dari kelas Kedua class Kedua { int Perkalian(Pertama Awal); int Kedua::Perkalian(Pertama Awal) { return (Awal.X * Awal.Y);
Fungsi Friend Hasil yang ditampilkan pada monitor adalah, int main() { // Melakukan instansiasi dari kelas Pertama Pertama Masukan_Data(40, 3); // Melakukan instansiasi dari kelas KEDUA Kedua Operasi_Berikutnya; // Memanggil fungsi Kali yang terdapat pada kelas KEDUA cout<<"Hasil kali : "<<Operasi_Berikutnya.Perkalian(Masukan_Data); return 0; } Hasil yang ditampilkan pada monitor adalah, Hasil kali : 120 Dari program tersebut dapat dilihat bahwa kelas Kedua sebagai friend class dari kelas Pertama, se-
Fungsi Friend hingga mempunyai hak akses penuh terhadap data yang ada di kelas Pertama sekalipun dalam kategori private