Šajā apmācībā mēs ar piemēriem uzzināsim par abstraktām virtuālām funkcijām un abstraktām klasēm.
Pirms mēs uzzinām par tīrām virtuālām funkcijām, noteikti pārbaudiet šīs apmācības:
- C ++ mantojums
- C ++ virtuālās funkcijas
C ++ tīras virtuālās funkcijas
Tiek izmantotas tīras virtuālās funkcijas
- ja funkcijai nav nekādas izmantošanas bāzes klasē
- bet funkcija jāievieš visām tās atvasinātajām klasēm
Ņemsim piemēru,
Pieņemsim, mums ir iegūti Triangle
, Square
un Circle
klases no Shape
klases, un mēs vēlamies, lai aprēķinātu platību visu šo formu.
Šajā gadījumā, mēs varam izveidot tīru virtuālo funkciju nosaukts calculateArea()
In Shape
. Tā kā tas ir tīrs virtuālo funkciju, visi atvasinātie klases Triangle
, Square
un Circle
jāiekļauj calculateArea()
funkciju ar īstenošanu.
Tīrai virtuālajai funkcijai nav funkcijas ķermeņa, un tai ir jābeidzas ar = 0
. Piemēram,
class Shape ( public: // creating a pure virtual function virtual void calculateArea() = 0; );
Piezīme:= 0
sintakse nenozīmē mēs piešķirot 0 funkcijai. Tas ir tikai veids, kā mēs definējam tīras virtuālās funkcijas.
Abstrakta klase
Klase, kas satur tīru virtuālo funkciju, ir pazīstama kā abstrakta klase. Iepriekš minētajā piemērā klase Shape
ir abstrakta klase.
Mēs nevaram izveidot abstraktas klases objektus. Tomēr mēs varam no tām atvasināt klases un izmantot to datu dalībniekus un dalībnieku funkcijas (izņemot tīras virtuālās funkcijas).
Piemērs: C ++ abstraktā klase un tīrā virtuālā funkcija
// 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; )
Rezultāts
Ievadiet garumu, lai aprēķinātu kvadrāta laukumu: 4 Kvadrāta laukums: 16 Ievadiet rādiusu, lai aprēķinātu apļa laukumu: 5 Apļa laukums: 78,5
Šajā programmā klases virtual float calculateArea() = 0;
iekšpusē Shape
ir tīra virtuālā funkcija.
Tāpēc mums jānodrošina ieviešana calculateArea()
abās atvasinātajās klasēs, pretējā gadījumā mēs saņemsim kļūdu.