C ++ abstraktni razred in čista navidezna funkcija

V tej vadnici bomo s pomočjo primerov spoznali abstraktne virtualne funkcije in abstraktne razrede.

Preden se naučimo čiste navidezne funkcije, si oglejte te vaje:

  • Dedovanje C ++
  • Navidezne funkcije C ++

C ++ čiste navidezne funkcije

Uporabljajo se čiste navidezne funkcije

  • če funkcija v osnovnem razredu nima nobene uporabe
  • vendar morajo funkcijo izvajati vsi njeni izvedeni razredi

Vzemimo primer,

Recimo, smo bili pridobljeni Triangle, Squarein Circlerazredi iz Shaperazreda, in želimo izračunati površino vseh teh oblik.

V tem primeru lahko ustvarimo čisto navidezno funkcijo, imenovano calculateArea()v Shape. Ker je to čista virtualna funkcija, vsi izpeljani razredi Triangle, Squarein Circlemora vsebovati calculateArea()funkcijo pri izvajanju.

Čista navidezna funkcija nima telesa funkcije in se mora končati z = 0. Na primer

 class Shape ( public: // creating a pure virtual function virtual void calculateArea() = 0; );

Opomba:= 0 sintaksa ne pomeni, da se dodeljevanje 0 funkciji. To je samo način, kako definiramo čiste navidezne funkcije.

Povzetek

Razred, ki vsebuje čisto navidezno funkcijo, je znan kot abstraktni razred. V zgornjem primeru je razred Shapeabstraktni.

Ne moremo ustvariti predmetov abstraktnega razreda. Vendar lahko iz njih izpeljemo razrede in uporabimo njihove podatkovne člane in funkcije članov (razen čistih navideznih funkcij).

Primer: C ++ abstraktni razred in čista navidezna 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; )

Izhod

 Vnesite dolžino za izračun površine kvadrata: 4 Površina kvadrata: 16 Vnesite radij za izračun površine kroga: 5 Površina kroga: 78,5

V tem programu je virtual float calculateArea() = 0;znotraj Shaperazreda čista navidezna funkcija.

Zato moramo zagotoviti izvajanje calculateArea()v obeh izpeljanih razredih, sicer bomo dobili napako.

Zanimive Članki...