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
, Square
ja Circle
luokat alkaen Shape
luokkaa, 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
, Square
ja sen Circle
on 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 Shape
on 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ä Shape
on puhdas virtuaalitoiminto.
Siksi meidän on tarjottava toteutus calculateArea()
molemmissa johdetuissa luokissamme, muuten saamme virheen.