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

  • DrePwn

    DrePwn

    22 Temmuz 2011
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • natescamp

    natescamp

    30 NİSAN 2009