Klasy abstrakcyjne (C++)
Klasy abstrakcyjne działają jak wyrażenia ogólnych pojęć, z których mogą być uzyskane bardziej specyficzne klasy.Nie można utworzyć obiektu typu klasy abstrakcyjnej, jednak można użyć wskaźników i odwołań do typu klasy abstrakcyjnej.
Klasa, która zawiera co najmniej jedną czystą mfunkcję wirtualną jest uważana za klasę abstrakcyjną.Klasy pochodne klasy abstrakcyjnej muszą implementować czystą funkcję wirtualną lub są one również klasami abstrakcyjnymi.
Funkcji wirtualna jest zadeklarowana jako "czysta" za pomocą czystego specyfikator składni (opisanego w Implementacja protokołu klasy).Rozważmy przykład przedstawiony w Wirtualnych funkcji.Zamiarem klasy Account jest dostarczenie ogólnych funkcji, ale obiekty typu Account są zbyt ogólne, by były przydatne.Tym samym, Account jest dobrym kandydatem do klasy abstrakcyjnej:
// deriv_AbstractClasses.cpp
// compile with: /LD
class Account {
public:
Account( double d ); // Constructor.
virtual double GetBalance(); // Obtain balance.
virtual void PrintBalance() = 0; // Pure virtual function.
private:
double _balance;
};
Jedyna różnica pomiędzy tą deklaracją, a poprzednią jest fakt, że PrintBalance jest zdeklarowana za pomocą czystego określnika (= 0).