Operator overloading
Operator overloading memungkinkan Anda untuk membuat operator standar, seperti +, -, * dan seterusnya, bekerja dengan objek dari tipe data Anda sendiri. Hal ini memungkinkan Anda untuk menulis fungsi yang mengubah operator tertentu sehingga melakukan tindakan tertentu ketika digunakan dengan objek dari suatu kelas. Misalnya, Anda bisa mendefinisikan ulang operator> agar, ketika digunakan dengan objek dari kelas Box (yang kita lihat sebelumnya), akan mengembalikan true jika argumen Kotak pertama memiliki volume yang lebih besar daripada yang kedua.
Operator overloading tidak mengijinkan anda untuk menemukan operator baru, Anda juga tidak bisa mengubah didahulukan dari operator, sehingga versi overload operator akan memiliki prioritas yang sama dalam urutan mengevaluasi sebuah ekspresi sebagai operator dasar asli.
Meskipun Anda tidak dapat membebani semua operator, pembatasan tidak terlalu menekan. Ini adalah operator yang tidak dapat Anda overload:
Resolusi lingkup operator,::
Operator kondisional,?:
Seleksi anggota langsung operator,.
Ukuran-of operator, sizeof
Dereferensi pointer ke anggota kelas operator, .*
Operator menerapkan overloaded
Jika kita ingin menerapkan overload operator untuk kelas, kita harus menulis fungsi khusus. Dengan asumsi bahwa itu adalah anggota kelas Box, prototipe untuk fungsi untuk membebani> operator akan menjadi sebagai berikut:
int operator> (Kotak & aBox); / / overload 'lebih besar dari'
Kata operator di sini adalah kata kunci. Dikombinasikan dengan operator, dalam hal ini,>, ia mendefinisikan fungsi operator. Nama fungsi dalam hal ini adalah operator> (). Anda dapat menulis fungsi operator dengan atau tanpa spasi di antara kata kunci operator dan operator itu sendiri, asalkan tidak ada ambiguitas. Ambiguitas muncul dengan operator yang menggunakan huruf yang normal seperti baru atau hapus. Jika mereka ditulis tanpa spasi, operatornew () atau operatordelete (), mereka adalah nama-nama hukum untuk fungsi biasa, sehingga untuk fungsi operator dengan operator ini, Anda harus meninggalkan ruang antara operator kata kunci dan operator itu sendiri.
Method overloading à beberapa method dengan nama yang sama dalam suatu kelas tertentu.
Syarat :
Berbeda dalam jumlah parameter.
Berbeda dalam tipe ataupun posisi parameter
Overloading Method
Yang dimaksud dengan Overloading Method adalah kita boleh mendeklarasikan nama method yang sama di dalam sebuah class, namun harus diperhatikan walaupun nama method boleh sama, tetapi daftar parameter yang dilewatkan haruslah berbeda.
Contoh dibawah ini akan memberikan gambaran tentang Overloading Method :
class Manusia {
String nama;
int usia;
void cetak(String namaManusia) { // method yang akan di-overload
nama = namaManusia;
System.out.println(“Nama : “ + nama);
}
void cetak(int usiaManusia) { // overloading method cetak
usia = usiaManusia;
System.out.println(“Usia : “ + usiaManusia);
}
}
Contoh source code :
#include
using namespace std;
class Box // Class definition at global scope
{
public:
// Constructor definition
Box(double lv=1.0, double bv=1.0, double hv=1.0)
{
cout <<>
length = lv; // Set values of
breadth = bv; // data members
height = hv;
}
// Function to calculate the volume of a box
double Volume() const
{
return length * breadth * height;
}
// Overloaded 'greater than'
bool operator>(const Box& aBox) const;
// Destructor definition
~Box()
{ cout << "Destructor called." <<>
private:
double length; // Length of a box in inches
double breadth; // Breadth of a box in inches
double height; // Height of a box in inches
};
// Operator function for 'greater t
han' which
// compares volumes of Box objects.
bool Box::operator>(const Box& aBox) const
{
return (this->Volume()) > (aBox.Volume());
}
int main()
{
Box SmallBox(4.0, 2.0, 1.0);
Box MediumBox(10.0, 4.0, 2.0);
Box BigBox(30.0, 20.0, 40.0);
if(MediumBox > SmallBox)
cout <<>
<< "MediumBox is Bigger than SmallBox";
if(MediumBox > BigBox)
cout <<>
<< "MediumBox is Bigger than BigBox";
else
cout <<>
<< "MediumBox is not Bigger than BigBox";
cout <<>
return 0;
}
Output :
0 komentar:
Posting Komentar