Kelas Abstrak C ++ dan Fungsi Virtual Murni

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, Squaredan Circlekelas dari Shapekelas 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, Squaredan Circleharus 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 = 0sintaks 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 Shapeadalah 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 Shapekelas adalah fungsi virtual murni.

Itulah mengapa kita harus menyediakan implementasi calculateArea()di kedua kelas turunan kita, atau kita akan mendapatkan error.

Artikel yang menarik...