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

  • bigky226

    bigky226

    11 HAZİRAN 2006
  • Paste Magazine

    Paste Magazi

    28 AĞUSTOS 2008
  • tseyina

    tseyina

    2 AĞUSTOS 2006