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

  • FUzzyBUnnyBOoties

    FUzzyBUnnyBO

    3 EKİM 2007
  • Joshua Bane

    Joshua Bane

    24 Temmuz 2007
  • LavcoPriceTech

    LavcoPriceTe

    21 AĞUSTOS 2010