Reine virtuelle Funktionen und abstrakte Klassen
Eine rein virtuelle Funktion ist eine virtuelle Funktion ohne Funktionskörper. Was bedeutet es, keinen Funktionskörper zu haben? Dies ist die Funktion, die wie folgt definiert ist:
virtueller Rückgabewert Funktionsname (formeller Parameter) = 0;
Wie Sie sehen können, sind die Definitionen von „virtuell“ und „virtuelle Funktion“ zuvor dieselben, wobei am Ende ein „=0“ hinzugefügt wird. Zeigt an, dass kein Funktionskörper vorhanden ist. Dies ist eine rein virtuelle Funktion . Eine Klasse, die rein virtuelle Funktionen enthält, ist eine abstrakte Klasse . Eine abstrakte Klasse hat mindestens eine rein virtuelle Funktion.
Die Existenz abstrakter Klassen besteht darin, eine hochabstrakte, einheitliche Schnittstelle zur Außenwelt bereitzustellen und dann ihre unterschiedlichen Methoden durch polymorphe Funktionen zu nutzen. Dies ist eine der Kernideen des objektorientierten C++-Designs und der Softwareentwicklung.
Die Merkmale abstrakter Klassen lassen sich wie folgt zusammenfassen:
1. Eine abstrakte Klasse kann ein Objekt nicht instanziieren. Sie kann nur als Basisklasse verwendet werden, damit abgeleitete Klassen die rein virtuellen Funktionen darin vervollständigen und es dann instanziieren und verwenden können.
2. Die abgeleitete abstrakte Klasse kann die rein virtuellen Funktionen in der Basisklasse immer noch unvollständig vervollständigen und weiterhin als abstrakte Klasse abgeleitet werden. Bis die Definition aller rein virtuellen Funktionen gegeben ist, wird sie zu einer konkreten Klasse und das Objekt kann nicht instanziiert werden.
3. Da abstrakte Klassen abstrakt sind und nicht verkörpert werden können, können sie nicht als Parametertypen, Rückgabewerte oder Umwandlungstypen verwendet werden.
4. Um mit dem dritten Punkt fortzufahren, können abstrakte Klassen einen Zeiger oder Referenztyp definieren, der auf ihre abgeleitete Klasse zeigt, um polymorphe Merkmale zu erreichen.