Freigeben über


Abstrakte Klassen (C++)

Abstrakte Klassen fungieren als Ausdrücke allgemeiner Konzepte, von denen spezifischere Klassen abgeleitet werden können. Sie können kein Objekt vom Typ einer abstrakten Klasse erstellen. Sie können jedoch Zeiger und Verweise auf Typen einer abstrakten Klasse verwenden.

Eine Klasse, die mindestens eine rein virtuelle Funktion enthält, wird als abstrakte Klasse angesehen. Klassen, die von der abstrakten Klasse abgeleitet sind, müssen die rein virtuelle Funktion implementieren, um nicht selbst als abstrakte Klasse angesehen zu werden.

Eine virtuelle Funktion wird als "rein" deklariert, indem die pure-specifier-Syntax (beschrieben unter Klassenprotokollimplementierung) verwendet wird. Betrachten Sie das unter Virtuelle Funktionen dargestellte Beispiel. Mit der Account-Klasse soll eine allgemeine Funktionalität gewährleistet werden, aber Objekte vom Typ Account sind zu allgemein, um von Nutzen zu sein. Daher ist Account ein guter Kandidat für eine abstrakte Klasse:

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

Diese Deklaration unterscheidet sich von der vorherigen einzig darin, dass PrintBalance mit dem reinen Bezeichner (= 0) deklariert wird.

Siehe auch

Referenz

Abgeleitete Klassen