Home > Ren's Free Time > Overloading Operator C++

Overloading Operator C++

Salah satu keunikan C++ yang tidak ada pada bahasa pemrograman lain adalah overloading operator ( as far as i know🙂 ) .
Overloading operator bertujuan untuk memudahkan operasi berbagai type data sesuai dengan kebutuhan kita misalkan yang melibatkan operasi yang melibatkan suatu object class. Dalam melakukan overloading operator tetap patuhi konvensi yang sudah berlaku. Misalnya jika operasi string_1 + string_2 = string_1string2 ( menggabungkan / concat ). Tapi jika operasi  seperti string_1 * string_2 = ( Ini artinya apa ya 😀 ), jangan dilakukan dan tidak disarankan walaupun itu bisa.
Berikut ini operator yang dapat dilakukan overloading.

Operator Name Type
, Comma Binary
! Logical NOT Unary
!= Inequality Binary
% Modulus Binary
%= Modulus assignment Binary
& Bitwise AND Binary
& Address-of Unary
&& Logical AND Binary
&= Bitwise AND assignment Binary
( ) Function call
( ) Cast Operator Unary
* Multiplication Binary
* Pointer dereference Unary
*= Multiplication assignment Binary
+ Addition Binary
+ Unary Plus Unary
++ Increment1 Unary
+= Addition assignment Binary
Subtraction Binary
Unary negation Unary
–– Decrement1 Unary
–= Subtraction assignment Binary
–> Member selection Binary
–>* Pointer-to-member selection Binary
/ Division Binary
/= Division assignment Binary
< Less than Binary
<< Left shift Binary
<<= Left shift assignment Binary
<= Less than or equal to Binary
= Assignment Binary
== Equality Binary
> Greater than Binary
>= Greater than or equal to Binary
>> Right shift Binary
>>= Right shift assignment Binary
[ ] Array subscript
^ Exclusive OR Binary
^= Exclusive OR assignment Binary
| Bitwise inclusive OR Binary
|= Bitwise inclusive OR assignment Binary
|| Logical OR Binary
~ One’s complement Unary
delete Delete
new New
conversion operators conversion operators Unary

Berikut ini contoh overloading operator binary +

#include<iostream>
using std::cout;

class Buah
{
private:
int apel;
int jeruk;

public:
Buah( int jumlah_apel=0, int jumlah_jeruk=0);
void displayBuah();
Buah operator + ( Buah b2);
};

int main()
{   Buah buah_1(10,5);
Buah buah_2(1,3);
Buah buah_3;
buah_3 = buah_2 + buah_1;

cout<< “object buah_3 : ” ;
buah_3.displayBuah();
return 0;
}

Buah::Buah(int jumlah_apel, int jumlah_jeruk)
{
apel = jumlah_apel;
jeruk = jumlah_jeruk;
}
Buah Buah::operator +(Buah b2)
{
Buah temp;
temp.apel = apel + b2.apel;
temp.jeruk = jeruk + b2.jeruk;
return temp;
}

void Buah::displayBuah()
{
cout<< “Jumlah Apel :” << apel;
cout <<” Jumlah Jeruk:” << jeruk;
}

Contoh overloading operator <


#include<iostream>
using std::cout;
using std::endl;

class Harga
{
private:
double harga_barang;
double diskon_barang;

public:
Harga( double harga, double diskon);
void info_harga();
int operator < ( Harga);
};

int main()
{
Harga barang_1(1000, 5);
Harga barang_2(12500, 7.5);

if( barang_1 < barang_2 )
cout<<” barang_1 lebih murah” << endl;
else
cout<< ” barang_2 lebih murah” << endl;
}

Harga::Harga(double harga, double diskon)
{
harga_barang = harga;
diskon_barang = diskon;
}
int Harga::operator < ( Harga x)
{

int harga = harga_barang – diskon_barang /100 * harga_barang;
int harga_x = x.harga_barang – x.diskon_barang / 100 * x.harga_barang;

return ( (harga< harga_x)? 1:0 ) ;
}

Terdapat beberapa operator yang tidak dapat dilakukan overloading yaitu :

  • . ( operator dot ), .* ( operator pointer ke anggota )
  • :: ( operator resolusi lingkup )
  • ?: ( operator ungkapan kondisi )
  •  sizeof ( operator untuk memperoleh ukuran data).

Walaupun suatu operator telah dilakukan overloading, ada sifat yang tidak berubah yaitu kaidah pemakain operator dan prioritas operator.

Semoga bermanfaat

Referensi : dari berbagai sumber

  1. April 1, 2015 at 20:18

    koding nya jelas mas… mantab
    izin copy bwat tugas..
    hehehe

  2. April 1, 2015 at 21:29

    edan.. pusing mas,.. yang operator <
    ada yang lebih simple mas

  3. Ren
    April 2, 2015 at 15:04

    Contohnya jangan dicopy langsung. tulis sendiri saja. klo perubahan carakter di editornya

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: