Dalam tutorial ini, kita akan belajar mengenai fungsi maya abstrak dan kelas abstrak dengan bantuan contoh.
Sebelum kita mengetahui mengenai fungsi maya tulen, pastikan untuk memeriksa tutorial ini:
- Pewarisan C ++
- Fungsi maya C ++
Fungsi Maya C ++ Murni
Fungsi maya tulen digunakan
- jika fungsi tidak mempunyai penggunaan dalam kelas asas
- tetapi fungsinya mesti dilaksanakan oleh semua kelas yang berasal
Mari kita ambil contoh,
Katakan, kita telah memperoleh Triangle
, Square
dan Circle
kelas dari Shape
kelas, dan kita mahu mengira luas semua bentuk ini.
Dalam kes ini, kita dapat membuat fungsi maya murni yang disebut calculateArea()
di Shape
. Oleh kerana ia adalah fungsi maya murni, semua kelas berasal Triangle
, Square
dan Circle
mesti menyertakan calculateArea()
fungsi dengan pelaksanaan.
Fungsi maya yang murni tidak mempunyai fungsi badan dan mesti diakhiri dengan = 0
. Sebagai contoh,
class Shape ( public: // creating a pure virtual function virtual void calculateArea() = 0; );
Nota: The = 0
sintaks tidak bermakna kita memberikan 0 kepada majlis itu. Ini hanya cara kita menentukan fungsi maya yang murni.
Kelas Abstrak
Kelas yang mengandungi fungsi maya dikenali sebagai kelas abstrak. Dalam contoh di atas, kelas Shape
adalah kelas abstrak.
Kami tidak dapat membuat objek kelas abstrak. Walau bagaimanapun, kami dapat memperoleh kelas dari mereka, dan menggunakan fungsi data anggota dan anggota mereka (kecuali fungsi maya murni).
Contoh: Kelas Abstrak C ++ dan Fungsi Maya Tulen
// 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; )
Pengeluaran
Masukkan panjang untuk mengira luas segiempat sama: 4 Luas persegi: 16 Masukkan jejari untuk mengira luas bulatan: 5 Luas bulatan: 78.5
Dalam program ini, virtual float calculateArea() = 0;
di dalam Shape
kelas terdapat fungsi maya yang murni.
Itulah sebabnya kita mesti memberikan pelaksanaan calculateArea()
di kedua-dua kelas turunan kita, jika tidak, kita akan mendapat ralat.