C ++ Abstrakti luokka ja puhdas virtuaalitoiminto

Tässä opetusohjelmassa opitaan abstrakteista virtuaalitoiminnoista ja abstrakteista luokista esimerkkien avulla.

Ennen kuin opimme puhtaista virtuaalitoiminnoista, muista tarkistaa nämä oppaat:

  • C ++ perintö
  • C ++ virtuaalitoiminnot

C ++ Pure Virtual -toiminnot

Käytetään puhtaita virtuaalitoimintoja

  • jos funktiolla ei ole mitään käyttöä perusluokassa
  • mutta funktio on toteutettava kaikissa sen johdetuissa luokissa

Otetaan esimerkki,

Oletetaan, olemme peräisin Triangle, Squareja Circleluokat alkaen Shapeluokkaa, ja haluamme laskea alueen kaikkien näiden muotoja.

Tällöin voimme luoda puhdasta virtuaalista funktio nimeltä calculateArea()vuonna Shape. Koska se on puhdas virtuaalifunktio, kaikki johdetut luokat Triangle, Squareja sen Circleon sisällettävä calculateArea()funktio toteutuksen kanssa.

Puhtaalla virtuaalisella funktiolla ei ole funktion runkoa, ja sen on lopputtava = 0. Esimerkiksi,

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

Huom= 0 syntaksia ei tarkoita olemme määrittämällä 0 toimintoon. Se on vain tapa, jolla määritämme puhtaat virtuaalitoiminnot.

Abstrakti luokka

Luokka, joka sisältää puhtaan virtuaalitoiminnon, kutsutaan abstraktiksi luokaksi. Yllä olevassa esimerkissä luokka Shapeon abstrakti luokka.

Emme voi luoda abstraktin luokan esineitä. Voimme kuitenkin johtaa niistä luokkia ja käyttää niiden datajäseniä ja jäsenfunktioita (lukuun ottamatta puhtaita virtuaalifunktioita).

Esimerkki: C ++ Abstrakti luokka ja puhdas virtuaalitoiminto

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

Tuotos

 Syötä pituus neliön pinta-alan laskemiseksi: 4 Neliön pinta-ala: 16 Syötä säde laskeaksesi ympyrän pinta-alan: 5 Ympyrän pinta-ala: 78,5

Tässä ohjelmassa luokan virtual float calculateArea() = 0;sisällä Shapeon puhdas virtuaalitoiminto.

Siksi meidän on tarjottava toteutus calculateArea()molemmissa johdetuissa luokissamme, muuten saamme virheen.

Mielenkiintoisia artikkeleita...