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

  • brokenbellsVEVO

    brokenbellsV

    11 EYLÜL 2009
  • Facebook Developers

    Facebook Dev

    24 ŞUBAT 2009
  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011