Dalam tutorial ini, kita akan belajar tentang fungsi virtual abstrak dan kelas abstrak dengan bantuan contoh.
Sebelum kita mempelajari tentang fungsi virtual murni, pastikan untuk memeriksa tutorial ini:
- Warisan C ++
- Fungsi virtual C ++
C ++ Fungsi Virtual Murni
Fungsi virtual murni digunakan
- jika suatu fungsi tidak memiliki kegunaan di kelas dasar
- tetapi fungsi tersebut harus diimplementasikan oleh semua kelas turunannya
Mari kita ambil contoh,
Misalkan, kita telah menurunkan Triangle
, Square
dan Circle
kelas dari Shape
kelas tersebut, dan kita ingin menghitung luas dari semua bentuk ini.
Dalam hal ini, kita dapat membuat fungsi virtual murni dengan nama calculateArea()
file Shape
. Karena ini adalah fungsi virtual murni, semua kelas turunan Triangle
, Square
dan Circle
harus menyertakan calculateArea()
fungsi dengan implementasi.
Fungsi virtual murni tidak memiliki badan fungsi dan harus diakhiri dengan = 0
. Sebagai contoh,
class Shape ( public: // creating a pure virtual function virtual void calculateArea() = 0; );
Catatan: The = 0
sintaks tidak berarti kita menugaskan 0 ke fungsi. Ini hanya cara kami mendefinisikan fungsi virtual murni.
Kelas Abstrak
Kelas yang berisi fungsi virtual murni dikenal sebagai kelas abstrak. Dalam contoh di atas, kelas tersebut Shape
adalah kelas abstrak.
Kita tidak dapat membuat objek dari kelas abstrak. Namun, kita dapat memperoleh kelas dari mereka, dan menggunakan anggota data dan fungsi anggota (kecuali fungsi virtual murni).
Contoh: Kelas Abstrak C ++ dan Fungsi Virtual Murni
// C++ program to calculate the area of a square and a circle #include using namespace std; // Abstract class class Shape ( protected: float dimension; public: void getDimension() ( cin>> dimension; ) // pure virtual Function virtual float calculateArea() = 0; ); // Derived class class Square : public Shape ( public: float calculateArea() ( return dimension * dimension; ) ); // Derived class class Circle : public Shape ( public: float calculateArea() ( return 3.14 * dimension * dimension; ) ); int main() ( Square square; Circle circle; cout << "Enter the length of the square: "; square.getDimension(); cout << "Area of square: " << square.calculateArea() << endl; cout << "Enter radius of the circle: "; circle.getDimension(); cout << "Area of circle: " << circle.calculateArea() << endl; return 0; )
Keluaran
Masukkan panjang untuk menghitung luas persegi: 4 Luas persegi: 16 Masukkan jari-jari untuk menghitung luas lingkaran: 5 Luas lingkaran: 78,5
Dalam program ini, virtual float calculateArea() = 0;
di dalam Shape
kelas adalah fungsi virtual murni.
Itulah mengapa kita harus menyediakan implementasi calculateArea()
di kedua kelas turunan kita, atau kita akan mendapatkan error.