C++ Overloading Operator: What, When, Where, Which, Why & How

  • Apa itu Overloading Operator?

Anda tentu sudah membaca artikel tentang overloading function.
Dalam C++ Operator overloading dikenal sebagai ad-hoc polymorphism, yakni jenis polymorphism dimana operator seperti +, = atau == diperlakukan sebagai fungsi polymorphic yang dapat memiliki behavior yang berbeda tergantung jenis argumentnya.
Overloaded operator merupakan fungsi dengan nama berupa simbol operator yang akan didefinisikan. Sebagai fungsi, overloaded operator juga memiliki return type dan argument/parameter.

Format penulisan Overloaded operator:
Type  operatoroperator_symbol (parameter)

myclass  operator(myclass);

  • Kapan menggunakan Overloading Operator?

Operator overloading digunakan untuk menyesuaikan perilaku operator yang berbeda.
Operator overloading baik digunakan saat meningkatkan kejelasan / kemudahan kelas yang Anda gunakan.
misalnya, overloading operator + untuk menjumlahkan object segiempat dengan cara yang jelas (jumlah panjangnya atau lebarnya).
Jangan menggunakan operator overloading hanya karena bisa dilakukan atau melakukan trik yang cerdik.
Tujuan overloading operator adalah membuat program lebih jelas dengan memberikan makna konvensional untuk operator seperti, ==, [], +, dan lainnya.
Misalnya, operator + seharusnya di-overload untuk melakukan penambahan, dan bukan pengurangan atau lainnya.
Hindari penggunaan overloading operator secara berlebihan atau tidak konsisten, karena ini bisa membuat sebuah program menjadi tidak jelas dan sulit dibaca.

  • Dimana Overloading Operator digunakan?

Overloading Operator digunakan dimana Anda membutuhkan operasi yang berbeda di dalam program C++ Anda.
C++ menyediakan sejumlah operator yang dapat di overload berikut ini.

+

* / % ^

&

| ~ ! ,

=

<= >= ++

<< 

>>  == != && ||
+= -= /= %= ^=

&=

|= *= <<= >>= []

()

-> ->* new new [] delete

delete []

  • Yang mana Overloading Operator yang benar?

Anda dapat membuat fungsi overloading untuk melakukan operasi sesuai dengan oparator tersebut di atas.
Anda tidak dapat melakukan overloading pada operator berikut ini.

  • dot (.) operator
  • sizeof operator
  • Scope resolution (::) operator
  • Arithmetic if (?:) operator
  • (.*) operator

Anda juga tidak dapat membuat operator baru; Hanya operator yang tersebut saja yang bisa di-overload.
Anda tidak bisa mengubah prioritas/precedence operator.

  • Mengapa perlu Overloading Operator?

Kita perlu melakukan overloading operator karena build-in operator yang disediakan oleh C++ melakukan fungsi yang alami, misalnya operator penjumlahan: 5 + 5 = 10. Kita memerlukan fungsi yang disesuaikan (user-defined function) secara khusus pada program object oriented kita, misalnya bujursangkar + segiempat = ?.

  • Bagaimana menggunakan Overloading Operator?

Berikut contoh program menggunakan overloading operator penjumlahan.

R1tambahR2

Penjumlahan dua obyek

#include<iostream>
using namespace std;
class Rectangle{
   private:
      int length;
      int width;
   public:
      Rectangle(int length=0, int width=0);
      Rectangle operator+(const Rectangle&) const; //operator+
      int getLength(){return length;}
      int getWidth(){return width;}
      int getArea(){ return length*width;}
};
Rectangle::Rectangle(int length, int width){
    this->length = length;
    this->width = width;
}
// Redefine overloaded operator plus (+)
Rectangle Rectangle::operator+ (const Rectangle& c) const {
    Rectangle result;
    result.length = (this->length + c.length);
    result.width = this->width;
    return result;
}
int main() {
   Rectangle x(4,5);
   Rectangle y(6,5);
   Rectangle z = x + y; // calls Rectangle::operator+(), 
   //note that width R1 must be the same with R2,
   //else will just take width of R1 instead of R2
   cout<<"z.length = "<<z.getLength()<<endl;
   cout<<"z.width = "<<z.getWidth()<<endl;
   cout<<"Area x = "<<x.getArea()<<endl;
   cout<<"Area y = "<<y.getArea()<<endl;
   cout<<"Area z = "<<z.getArea()<<endl;
   cin.get(); 
   return 0;
}

Beberapa contoh program C++ overloading operator dapat Anda lihat disini:
https://www.tutorialspoint.com/cplusplus/cpp_overloading.htm
https://en.wikibooks.org/wiki/C%2B%2B_Programming/Operators/Operator_Overloading

Send your comment