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

  • DancingIsAPassion

    DancingIsAPa

    29 AĞUSTOS 2009
  • DetroitBORG

    DetroitBORG

    29 Temmuz 2008
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005