C ++ abstraktā klase un tīrā virtuālā funkcija

Š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, Squareun Circleklases no Shapeklases, 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, Squareun Circlejā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 Shapeir 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ē Shapeir 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.

Interesanti raksti...