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

  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • Michael Lummio

    Michael Lumm

    25 Mayıs 2007
  • Ty Moss

    Ty Moss

    20 Kasım 2007