In C ist es nicht möglich, Mitgliedsfunktionen, die sowohl statisch als auch virtuell sind, direkt zu definieren. Der Compiler gibt einen Fehler aus, wenn er versucht, ein „statisches virtuelles Mitglied ()“ zu deklarieren. Es gibt jedoch Techniken, um eine gleichwertige Funktionalität zu erreichen.
Um das Verhalten einer statischen virtuellen Memberfunktion zu emulieren, ziehen Sie den folgenden Ansatz in Betracht:
<code class="cpp">struct Object { struct TypeInformation; static const TypeInformation &GetTypeInformation() { return GetTypeInformationImpl(); } protected: virtual const TypeInformation &GetTypeInformationImpl() const = 0; };</code>
Hier ist die Funktion GetTypeInformation() als statisch definiert und gibt einen konstanten Verweis auf den TypeInformation-Typ zurück. Die tatsächliche Implementierung dieser Funktion wird jedoch über die geschützte virtuelle Funktion GetTypeInformationImpl() an die abgeleitete Klasse delegiert.
Das obige ist der detaillierte Inhalt vonKönnen statische Memberfunktionen in C virtuell sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!