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

  • Exalto_Gamer

    Exalto_Gamer

    15 EKİM 2014
  • krotoflik

    krotoflik

    26 ŞUBAT 2011
  • kylelandry

    kylelandry

    9 AĞUSTOS 2007