RSS

Klasa podstawowa nie do wykorzystania

Liczba odsłon: 43

Program pisany w języku C++ może zawierać klasy podstawowe niemożliwe do bezpośredniego wykorzystania. Jeżeli jedną z funkcji składowych klasy zadeklarujesz jako prawdziwie wirtualną (ang. pure virtual), próba zadeklarowania obiektu tej klasy spali na panewce:

 

virtual Funkcja() = 0;

 

Co jednak zrobić, jeżeli klasa nie może zawierać tego typu funkcji wirtualnych?

Wbrew pozorom jest na to metoda. Wystarczy zadeklarować konstruktor klasy w sekcji protected, by utworzenie elementu możliwe było jedynie za pośrednictwem klasy nadrzędnej (której konstruktor będzie już zadeklarowany w sekcji public):

 

class Podstawowa {

  protected:

  Podstawowa() {}

}

class Pochodna : public Podstawowa {

  public:

  Pochodna() : Podstawowa() {}

}