Pada pertemuan ini, saya akan membahas mengenai Friend dan Operator Overloading dalam Class ..
Apa itu friend ???
Friend adalah fungsi yang bukan merupakan anggota dari suatu class, tapi dapat mengakses anggota kelas yg bersifat private dan protected.
Pemakaian friend merupakan suatu kontradiksi, mengapa??
Karena tujuan utama dari pbo adalah pengkapsulan dan pembatasan akses data, sedangkan dengan adanya friend, semua data dalam class menjadi bisa diakses oleh fungsi yang bukan merupakan anggota class itu sendiri.
Cara pemakaian friend cukup mudah, kita tinggal menambahkan kata “friend” di depan nama fungsi yang akan kita buat, dan deklarasikan prototype fungsi di dalam class (public).
// contoh codingan pemakaian friend
#include
class mahasiswa
{
private :
int nilai;
char nama[20];
public :
mahasiswa(); // constructor
void inisialisasi(int nilai1, char *nama1);
//prototype friend function dideklarasikan dalam class
friend void show(mahasiswa satu, int a);
~mahasiswa() // destructor
{}
};
void main()
{
mahasiswa satu,dua;
satu.inisialisasi(100, "aku");
dua.inisialisasi(90, "kamu");
show(satu,1);
show(dua,2);
cin.get();
}
mahasiswa::mahasiswa()
{
nilai = 0;
strcpy(nama,"");
}
void mahasiswa::inisialisasi (int nilai1, char *nama1)
{
nilai = nilai1;
strcpy(nama, nama1);
}
//friend function
void show(mahasiswa satu, int a)
{
cout << "Nama mahasiswa " << a << " : " << satu.nama << endl;
class mahasiswa
{
private :
int nilai;
char nama[20];
public :
mahasiswa(); // constructor
void inisialisasi(int nilai1, char *nama1);
~mahasiswa() // destructor
{}
};
void main()
{
mahasiswa satu,dua;
satu.inisialisasi(100, "aku");
dua.inisialisasi(90, "kamu");
show(satu,1);
show(dua,2);
cin.get();
}
mahasiswa::mahasiswa()
{
nilai = 0;
strcpy(nama,"");
}
void mahasiswa::inisialisasi (int nilai1, char *nama1)
{
nilai = nilai1;
strcpy(nama, nama1);
}
//friend function
void show(mahasiswa satu, int a)
{
cout << "Nama mahasiswa " << a << " : " << satu.nama << endl;
class parkir
{
private :
int mobil;
int motor;
public :
parkir(int mob=0, int mot=0);
void get(int a);
parkir operator + (parkir ob);
};
void main()
{
parkir obj1(10,20);
parkir obj2(45,25);
parkir obj3;
obj3 = obj1 + obj2;
obj1.get(1);
obj2.get(2);
obj3.get(3);
cin.get();
}
parkir::parkir(int mob, int mot)
{
mobil = mob;
motor = mot;
}
void parkir::get(int a)
{
cout << "mobil " << a << " : " << mobil << endl;
cout << "motor " << a << " : " << motor << endl << endl;
}
parkir parkir::operator + (parkir ob)
{
parkir tmp; // objek penampung
tmp.mobil = mobil + ob.mobil;
tmp.motor = motor + ob.motor;
return(tmp);
}