C ++ abstraktne klass ja puhas virtuaalne funktsioon

Selles õpetuses õpime näidete abil abstraktsetest virtuaalsetest funktsioonidest ja abstraktsetest klassidest.

Enne puhta virtuaalsete funktsioonide tundmaõppimist kontrollige kindlasti neid õpetusi:

  • C ++ pärand
  • C ++ virtuaalsed funktsioonid

C ++ puhtad virtuaalsed funktsioonid

Kasutatakse puhtaid virtuaalseid funktsioone

  • kui funktsioonil pole baasklassis mingit kasutamist
  • kuid funktsiooni peavad rakendama kõik selle tuletatud klassid

Võtame näite,

Oletame, oleme saadud Triangle, Squareja Circleklasside Shapeklass, ja me tahame arvutada pindala kõik need kujundid.

Sel juhul saame luua puhta virtuaalse funktsiooni, mille nimi calculateArea()on Shape. Kuna see on puhas virtuaalne funktsioon, kõik tuletatud klassid Triangle, Squareja Circlepeab sisaldama calculateArea()funktsiooni rakendamist.

Puhtal virtuaalsel funktsioonil pole funktsiooni keha ja see peab lõppema = 0. Näiteks,

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

Märkus . = 0Süntaks ei tähenda, et määraksime funktsioonile 0. See on lihtsalt viis, kuidas määratleme puhtad virtuaalsed funktsioonid.

Abstraktne klass

Klass, mis sisaldab puhast virtuaalset funktsiooni, on tuntud kui abstraktne klass. Ülaltoodud näites on klass Shapeabstraktne klass.

Me ei saa luua abstraktse klassi objekte. Siiski võime neist tuletada klassid ja kasutada nende andmeliikmeid ja liikmete funktsioone (välja arvatud puhtad virtuaalsed funktsioonid).

Näide: C ++ abstraktne klass ja puhas virtuaalne funktsioon

 // 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; )

Väljund

 Ruudu pindala arvutamiseks sisestage pikkus: 4 Ruudu pindala: 16 Sisestage ringi pindala arvutamiseks raadius: 5 Ringi pindala: 78,5

Selles programmis virtual float calculateArea() = 0;on Shapeklassi sees puhas virtuaalne funktsioon.

Sellepärast peame pakkuma calculateArea()mõlema tuletatud klassi rakenduse, muidu saame vea.

Huvitavad Artiklid...