Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Zugriffssteuerung, die virtuell-Funktionen angewendet wird, wird durch den Typ angibt, der verwendet wird, um den Funktionsaufruf ausführen.Überschreiben von Deklarationen der Funktion wirken sich nicht auf die Zugriffssteuerung für einen angegebenen Typ.Beispiele:
// access_to_virtual_functions.cpp
class VFuncBase
{
public:
virtual int GetState() { return _state; }
protected:
int _state;
};
class VFuncDerived : public VFuncBase
{
private:
int GetState() { return _state; }
};
int main()
{
VFuncDerived vfd; // Object of derived type.
VFuncBase *pvfb = &vfd; // Pointer to base type.
VFuncDerived *pvfd = &vfd; // Pointer to derived type.
int State;
State = pvfb->GetState(); // GetState is public.
State = pvfd->GetState(); // C2248 error expected; GetState is private;
}
Im vorherigen Beispiel wird das Aufrufen der virtuellen Funktion GetState mithilfe eines Zeigers, um VFuncBase Aufrufe VFuncDerived::GetStateeinzugeben und des GetState als öffentlich behandelt.GetState jedoch mithilfe eines Zeigers ist aufrufen, um eine Eingabe VFuncDerived Zugriffssteuerung verletzung, da GetStateVFuncDerivedin der Klasse privat deklariert ist.
![]() |
---|
Die virtuelle Funktion GetState kann mithilfe eines Zeigers auf die Basisklasse VFuncBaseaufgerufen werden.Dies bedeutet nicht, dass die aufgerufene Funktion die Basisklassenversion dieser Funktion ist. |