SORU
24 EYLÜL 2008, ÇARŞAMBA


GNU derleyici uyarı "sınıfının sanal fonksiyon ama sanal olmayan yıkıcı"

C arayüzü , yani bir sınıf saf sanal fonksiyon içeren tanımlıyorum.

Açıkça arabirimi kullanıcı arabirimi için bir işaretçi nesne silmek için yasaklamak istiyorum, arabirim için korumalı ve sanal olmayan bir yıkıcı, falan ilan etti:

class ITest{
public:
    virtual void doSomething() = 0;
protected:
    ~ITest(){}
};

void someFunction(ITest * test){
    test->doSomething(); // ok
    // deleting object is not allowed
    // delete test; 
}

GNU derleyici bana bir uyarı veriyor söyleyerek "'' sanal fonksiyonlar ama sanal olmayan yıkıcı". ITest sınıf

Yıkıcı korunuyorsa, sanal ya da sanal olmayan olan farkı nedir?

Bu uyarı güvenli bir şekilde göz ardı ya da susturulmuş olabilir mi?

CEVAP
24 EYLÜL 2008, ÇARŞAMBA


Derleyici daha fazla veya daha az bir hata. Derleyici daha yeni sürümlerde bu uyarı atılan (en az 4.3 değil) unutmayın. Yıkıcı korunacak ve sanal olmayan olması durumunda tamamen meşrudur.

Konuyla ilgili Herb Sutter tarafından mükemmel bir makale için here bakın. Makale:

Kılavuz #4: Bir temel sınıf yıkıcı kamu ve sanal ya da korumalı ve pratik de olmalıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BSA

    BSA

    9 NİSAN 2012
  • Caroline Martin

    Caroline Mar

    19 EYLÜL 2008
  • Makeup Lover

    Makeup Lover

    12 HAZİRAN 2011