Prywatne funkcje wirtualne
Sposób prywatnej wirtualnej funkcje są obsługiwane w klas pochodnych zmienił się z zarządzanych rozszerzeń języka C++ do Visual C++.
Rozszerzenia zarządzane poziom dostępu do funkcji wirtualnych nie ogranicza możliwość zastąpiony w klasie pochodnej.W nowych składni funkcji wirtualnych nie można zastąpić klasy podstawowej funkcji wirtualnych, którego nie można uzyskać dostępu.Na przykład:
__gc class MyBaseClass {
// inaccessible to a derived class
virtual void g();
};
__gc class MyDerivedClass : public MyBaseClass {
public:
// okay in Managed Extensions; g() overrides MyBaseClass::g()
// error in new syntax; cannot override: MyBaseClass::g() is inaccessible …
void g();
};
Nie istnieje żadne rzeczywiste mapowanie tego rodzaju projekt na nowe elementy składni.Po prostu trzeba udostępnić członkowie klasy podstawowej — to znaczy, niż prywatne.Metody dziedziczone nie trzeba posiadać te same prawa dostępu.W tym przykładzie najmniej inwazyjne zmiana jest, aby Państwa MyBaseClass protected.W ten sposób dostęp do programów ogólne metody poprzez MyBaseClass jest nadal zabronione.
ref class MyBaseClass {
protected:
virtual void g();
};
ref class MyDerivedClass : MyBaseClass {
public:
virtual void g() override;
};
Należy zauważyć, że wobec braku jawne virtual słowa kluczowego w klasie podstawowej, pod nową składnię, generuje komunikat ostrzegawczy.
Zobacz też
Informacje
Koncepcje
Deklaracje członków w obrębie klasy lub interfejsu (C++/CLI)