SORU
7 HAZİRAN 2009, Pazar


Arama sanal fonksiyonlar içinde kurucular

Sanırım iki C sınıfları var:

class A
{
public:
  A() { fn(); }

  virtual void fn() { _n = 1; }
  int getn() { return _n; }

protected:
  int _n;
};

class B : public A
{
public:
  B() : A() {}

  virtual void fn() { _n = 2; }
};

Aşağıdaki kodu yazarsam:

main()
{
  B b;
  int n = b.getn();
}

N 2 olduğu düşünülebilir.

N, 1'e ayarlı olduğu ortaya çıktı. Neden?

CEVAP
7 HAZİRAN 2009, Pazar


Yapıcı veya yıkıcı sanal işlevleri çağırmak tehlikelidir ve mümkün olduğunca kaçınılmalıdır. Tüm C uygulamaları işlev sürümü mevcut kurucu hiyerarşi düzeyinde tanımlanmış ve daha fazla aramalı.

C FAQ Lite çok iyi bölümde 23.7 bu kapsar. (Ve SSS geri kalanı) okuma takip için öneririm.

EDİT(Teşekkürler litb) En düzeltildi

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amazon Web Services

    Amazon Web S

    8 NİSAN 2009
  • iBand IguJoo

    iBand IguJoo

    25 AĞUSTOS 2006
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011