Ц ++ апстрактна класа и чиста виртуелна функција

У овом упутству ћемо научити о апстрактним виртуелним функцијама и апстрактним часовима уз помоћ примера.

Пре него што научимо о чистим виртуелним функцијама, обавезно проверите ове водиче:

  • Наслеђивање Ц ++
  • Ц ++ виртуелне функције

Ц ++ чисте виртуелне функције

Користе се чисте виртуелне функције

  • ако функција нема никакве користи у основној класи
  • али функцију морају имплементирати све њене изведене класе

Узмимо пример,

Претпоставимо, ми смо изведени Triangle, Squareа Circleнастава из Shapeкласе, и желимо да израчуна површину свих ових облика.

У овом случају можемо створити чисту виртуелну функцију именовану calculateArea()у Shape. Пошто је чиста виртуелни функција свих изведених класе Triangle, Squareи Circleмора садржати calculateArea()функцију са имплементације.

Чиста виртуелна функција нема тело функције и мора завршити са = 0. На пример,

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

Напомена:= 0 синтакса не значи да се додељивање 0 функцији. То је само начин на који дефинишемо чисте виртуелне функције.

Апстрактни час

Класа која садржи чисту виртуелну функцију позната је као апстрактна класа. У горњем примеру, класа Shapeје апстрактна класа.

Не можемо створити објекте апстрактне класе. Међутим, можемо из њих изводити класе и користити њихове чланове података и функције чланова (осим чистих виртуелних функција).

Пример: Ц ++ апстрактна класа и чиста виртуелна функција

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

Оутпут

 Унесите дужину за израчунавање површине квадрата: 4 Површина квадрата: 16 Унесите радијус за израчунавање површине круга: 5 Површина круга: 78,5

У овом програму, virtual float calculateArea() = 0;унутар Shapeкласе је чиста виртуелна функција.

Због тога морамо обезбедити имплементацију calculateArea()у обе наше изведене класе, иначе ћемо добити грешку.

Занимљиви Чланци...