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

  • Google

    Google

    18 EYLÜL 2005
  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007