C ++ Sažetak klase i čista virtualna funkcija

U ovom uputstvu uz primjere ćemo naučiti apstraktne virtualne funkcije i apstraktne klase.

Prije nego što naučimo o čistim virtualnim funkcijama, svakako provjerite ove upute:

  • Nasljeđivanje C ++
  • C ++ virtualne funkcije

C ++ čiste virtualne funkcije

Koriste se čiste virtualne funkcije

  • ako funkcija nema nikakve koristi u osnovnoj klasi
  • ali funkciju moraju provoditi sve njezine izvedene klase

Uzmimo primjer,

Recimo, mi smo izvedeni Triangle, Squarea Circlenastava iz Shaperazreda, i želimo izračunati površinu svih tih oblika.

U ovom slučaju možemo stvoriti čistu virtualnu funkciju imenovanu calculateArea()u Shape. Budući da je čista virtualna funkcija, svi izvedeni razredi Triangle, Squarea Circlemora sadržavati calculateArea()funkciju s provedbom.

Čista virtualna funkcija nema tijelo funkcije i mora završiti s = 0. Na primjer,

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

Napomena:= 0 sintaksa ne znači da su dodjeljivanje 0 do funkcije. To je samo način na koji definiramo čiste virtualne funkcije.

Sažetak klase

Klasa koja sadrži čistu virtualnu funkciju poznata je kao apstraktna klasa. U gornjem primjeru razred Shapeje apstraktni razred.

Ne možemo stvoriti objekte apstraktne klase. Međutim, od njih možemo izvoditi klase i koristiti njihove članove podataka i funkcije članova (osim čistih virtualnih funkcija).

Primjer: C ++ apstraktna klasa i čista virtualna 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; )

Izlaz

 Unesite duljinu za izračunavanje površine kvadrata: 4 Površina kvadrata: 16 Unesite radijus za izračunavanje površine kruga: 5 Površina kruga: 78,5

U ovom programu virtual float calculateArea() = 0;unutar Shapeklase je čista virtualna funkcija.

Zbog toga moramo osigurati implementaciju calculateArea()u obje izvedene klase, inače ćemo dobiti pogrešku.

Zanimljivi članci...