Neden C soyut bir sınıf için sanal bir yıkıcı ilan etmeli miyim ? | Netgez.com
SORU
7 Kasım 2008, Cuma


Neden C soyut bir sınıf için sanal bir yıkıcı ilan etmeli miyim ?

C temel sınıflar için sanal yıkıcılar bildirmek için iyi bir uygulamadır biliyorum , ama her zaman bile arabirimleri olarak işlev soyut sınıflar için virtual yıkıcılar bildirmek için önemli mi? Neden bazı nedenler ve örnekler veriniz.

CEVAP
7 Kasım 2008, Cuma


Bir arabirim için daha da önemli. Sınıfınızın herhangi bir kullanıcı muhtemelen arayüzü için bir işaretçi, beton uygulaması için bir işaretçi tutar. Ne zaman onlar gelmek silin, eğer yıkıcı olmayan sanal, onlar çağrı arabirimi yıkıcı (veya derleyici tarafından sağlanan varsayılan, yapmasaydın belirtin), türetilmiş sınıfın yıkıcı. Anlık bellek sızıntısı.

Örneğin

class Interface
{
   virtual void doSomething(void) = 0;
};

class Derived : public Interface
{
   Derived(void);
   ~Derived(void) 
   {
      // Do some important cleanup...
   }
};

void myFunc(void)
{
   Interface* p = new Derived();
   // The behaviour of the next line is undefined. It probably 
   // calls Interface::~Interface, not Derived::~Derived
   delete p; 
}

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • ASUS Campus Life

    ASUS Campus

    18 Mart 2013
  • EmbarkToHeaven

    EmbarkToHeav

    3 EYLÜL 2007