Polymorphism & Virtual Function di C++
Penjelasan
Polymorphism ("banyak bentuk") memungkinkan sebuah pointer/referensi bertipe base class memanggil versi method yang sudah di-override di derived class-nya secara otomatis saat runtime — ini WAJIB ditandai dengan keyword virtual di base class, kalau tidak, C++ akan selalu memanggil versi base class-nya (dikenal sebagai "method hiding", bukan polymorphism sungguhan).
Contoh Konsep
#include <iostream>
class Hewan {
public:
virtual std::string bersuara() { // wajib virtual
return "Hewan bersuara.";
}
};
class Kucing : public Hewan {
public:
std::string bersuara() override {
return "Meong!";
}
};
int main() {
Hewan *hewanku = new Kucing(); // pointer base class, object derived class
std::cout << hewanku->bersuara() << std::endl; // Meong!, bukan "Hewan bersuara."
delete hewanku;
return 0;
}
Praktikum
Buat class Bentuk dengan virtual method luas() yang mengembalikan 0. Buat class Persegi (public Bentuk) dengan field sisi, method luas()-nya di-override mengembalikan sisi * sisi. Buat pointer Bentuk* yang menunjuk ke object Persegi, lalu tampilkan hasil luas()-nya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu tambahkan kata override di method derived class yang meng-override virtual method — bukan wajib secara sintaks, tapi kalau ada typo nama method (mis. beda huruf besar/kecil), compiler akan memberi error, bukan diam-diam membuat method baru yang tidak ter-override.