Udostępnij za pośrednictwem


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

Widoczność członków

Koncepcje

Deklaracje członków w obrębie klasy lub interfejsu (C++/CLI)