Hatalar, hatalar, sorular - sayfa 1677

 
Sergei Vladimirov :
Açılış ve kapanış fiyatları hakkında bir şey yazmadım.
Bu yüzden seni yanlış anladım - üzgünüm.
 

Neden özel yöntemler için bir hata?

 class CFoo
  {
   private :
   void virtual func( int x) final { }
  };
 
class CBar : public CFoo
  {
   void func( int ) { }
  };
 
fxsaber :

Neden özel yöntemler için bir hata?

private bununla hiçbir ilgisi yok, bu işlevi final olarak ilan ettiniz ve onu yeniden tanımlamaya çalışıyorsunuz.

not. Derlemeye çalıştım - derleyici sorunun ne olduğunu yazıyor.

 
Sergei Vladimirov :
private bununla hiçbir ilgisi yok, bu işlevi final olarak ilan ettiniz.
Bu nedenle, miras alınan sınıfta ebeveynin özel yöntemi yoktur. Bu nedenle, yeniden tanımlamalar, olmaması gerektiği gibi.
 
fxsaber :
Bu nedenle, miras alınan sınıfta ebeveynin özel yöntemi yoktur. Bu nedenle, yeniden tanımlamalar, olmaması gerektiği gibi.
Merhaba, geldik.
 
Sergei Vladimirov :
Merhaba, geldik.
kamu mirası. Derleyiciye göre ebeveynin özel yöntemlerine çocuk tarafından erişilemez.
 
fxsaber :
kamu mirası. Derleyiciye göre ebeveynin özel yöntemlerine çocuk tarafından erişilemez.

Bir temel sınıfın özel bir sanal yöntemi bir mirasçıdan çağrılamaz, ancak geçersiz kılınabilir, yapmaya çalıştığınız şey budur.

 
Sergei Vladimirov :

Bir temel sınıf özel sanal yöntemi, bir mirasçıdan çağrılamaz, ancak geçersiz kılınabilir.

Teşekkürler, bilmiyordum. Bunun yararlı olabileceği hiçbir şey düşünemiyorum. X_Macro'ya çok benzer. Daha iyi anlamak için benzer bir örnek yapmaya çalışacağım.
 
fxsaber :
Daha iyi anlamak için benzer bir örnek yapmaya çalışacağım.

havalı çıktı

 class BASE
{
private :
   void virtual Func() { Print ( __FUNCSIG__ ); }
public :
   void Init() {Func();}
};

class CHILD : public BASE
{
private :
   virtual void Func() { Print ( __FUNCSIG__ ); }
};

void OnStart ()
{
  BASE* Base = new CHILD;
  
  Base.Init();
  
   delete (Base);
}

Belki böyle bir tasarım bir yerde faydalı olabilir.

 
fxsaber :
kamu mirası. Derleyiciye göre ebeveynin özel yöntemlerine çocuk tarafından erişilemez.
Bununla, daha fazla kalıtımın doğrudan yasaklanması olan final anahtar sözcüğünün bir analogunu yapabilirsiniz.