Study
C++

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.

Editor Latihan

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.