C++ Class Default Equality Operator

3 min read Jul 01, 2024
C++ Class Default Equality Operator

C++ Class Default Equality Operator

Dalam pemrograman C++, operator kesetaraan (==) secara default membandingkan alamat memori dua objek. Ini berarti bahwa dua objek yang berbeda, bahkan jika keduanya memiliki nilai yang sama, tidak akan dianggap sama oleh operator == default.

Contoh:

#include 

class MyObject {
public:
  int value;

  MyObject(int val) : value(val) {}
};

int main() {
  MyObject obj1(5);
  MyObject obj2(5);

  if (obj1 == obj2) {
    std::cout << "Objek 1 dan Objek 2 sama" << std::endl;
  } else {
    std::cout << "Objek 1 dan Objek 2 tidak sama" << std::endl;
  }

  return 0;
}

Output dari kode di atas adalah:

Objek 1 dan Objek 2 tidak sama

Ini karena obj1 dan obj2 memiliki alamat memori yang berbeda, meskipun keduanya memiliki nilai value yang sama.

Mendefinisikan Operator Kesetaraan Kustom

Untuk membandingkan nilai objek dan bukan alamat memori, kita perlu mendefinisikan operator kesetaraan kustom. Hal ini dilakukan dengan overloading operator ==.

Contoh:

#include 

class MyObject {
public:
  int value;

  MyObject(int val) : value(val) {}

  // Overloading operator kesetaraan
  bool operator==(const MyObject& other) const {
    return this->value == other.value;
  }
};

int main() {
  MyObject obj1(5);
  MyObject obj2(5);

  if (obj1 == obj2) {
    std::cout << "Objek 1 dan Objek 2 sama" << std::endl;
  } else {
    std::cout << "Objek 1 dan Objek 2 tidak sama" << std::endl;
  }

  return 0;
}

Output dari kode di atas adalah:

Objek 1 dan Objek 2 sama

Sekarang, operator == membandingkan nilai value dari kedua objek, dan karena keduanya sama, objek tersebut dianggap sama.

Catatan:

  • Operator kesetaraan kustom harus dikembalikan dengan tipe bool.
  • Parameter other harus berupa referensi konstan (const) untuk menghindari salinan objek.
  • Operator == harus didefinisikan sebagai const karena tidak mengubah objek.

Kesimpulan

Operator kesetaraan default dalam C++ membandingkan alamat memori. Untuk membandingkan nilai objek, Anda perlu mendefinisikan operator kesetaraan kustom dengan overloading operator ==.

Latest Posts