SORU
10 Mart 2009, Salı


C saf sanal yıkıcı

Yanlış yazmak için:

class A {
public:
    virtual ~A() = 0;
};

bir soyut temel sınıf için?

Bu MSVC derler... zamanında kaza Olacak? en azından

CEVAP
10 Mart 2009, Salı


Evet. Ayrıca yıkıcı uygulamak gerekir:

class A {
public:
    virtual ~A() = 0;
};

inline A::~A() { }

yeterli olacaktır.

Her şey Bir edinirsiniz ve daha sonra silmek veya yok etmek için, A's yıkıcı sonunda yapılacak. çalışırsanız ve bunu bir oy aldığından beri, açıklamak gerekir: Saf ve bir uygulama olmadığı için, tanımsız davranış doğmak olacaktır. Bir popüler platform üzerinde, purecall işleyicisi ve kaza çağırır.

Edit: daha uyumlu olması için bildirim sabitleme, http://www.comeaucomputing.com/tryitout/ . derlenmiş

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007
  • Drakinen

    Drakinen

    1 EYLÜL 2008
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007