Aracılığıyla paylaş


Özel Sanal İşlevler

Özel sanal işlevlerin türetilmiş sınıflarda ele alınma yolu C++ için Yönetilen Uzantılardan Visual C++ 2010öğesine değişti.

Yönetilen Uzantılar'da, sanal işlevin erişim düzeyi türetilmiş bir sınıfın içinde geçersiz kılınma kabiliyetini kısıtlamaz. Yeni sözdiziminde sanal işlem erişemediği bir temel sınıfı sanal işlemini geçersiz kılamaz. Örneğin:

__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();
};

Yeni sözdizimi üzerine bu tür tasarımla gerçek eşleme mevcut değil. Temel sınıf üyelerinin gizli olmayacak şekilde erişilebilir yapılması gerekir. Devralınan yöntemlerin aynı erişimi taşımaları gerekmez. Bu örnekte, MyBaseClass üyesini protected yapmak en az bozucu değişikliktir. Bu şekilde, genel programın yönteme MyBaseClass ile erişimi hala yasak olur.

ref class MyBaseClass {
protected:
   virtual void g();
};

ref class MyDerivedClass : MyBaseClass {
public:
   virtual void g() override;
};

Açık virtual anahtar sözcüğünün temel sınıfta yeni bir sözdizimi altında olmaması bir uyarı iletisi oluşturur.

Ayrıca bkz.

Başvuru

Member Visibility

Kavramlar

Sınıfta veya Arayüzde Üye Bildirimleri