SORU
3 Ocak 2011, PAZARTESİ


Bu özel durumda, bir kurucu üye başlatıcı listeyi kullanarak ve atama değerleri arasında bir fark var mı?

Ve oluşturulan kodu içten, arasında gerçekten bir fark var :

MyClass::MyClass(): _capacity(15), _data(NULL), _len(0)
{
}

ve

MyClass::MyClass()
{
  _capacity=15;
  _data=NULL;
  _len=0
}

teşekkürler...

CEVAP
3 Ocak 2011, PAZARTESİ


Başlatma listesi sürekli üyeleri,kaynaklar ve temel sınıf başlatmak için kullanmak gerekir

Sürekli üyesi, referanslar ve parola parametreleri sınıf kurucularını tabanına başlatmak için gereken zaman yorumlarda da belirtildiği gibi, başlatma listesi kullanmanız gerekir.

struct aa
{
    int i;
    const int ci;       // constant member

    aa() : i(0) {} // will fail, constant member not initialized
};

struct aa
{
    int i;
    const int ci;

    aa() : i(0) { ci = 3;} // will fail, ci is constant
};

struct aa
{
    int i;
    const int ci;

    aa() : i(0), ci(3) {} // works
};

Örnek (olmayan) kapsamlı sınıf/yapı referans içerir:

struct bb {};

struct aa
{
    bb& rb;
    aa(bb& b ) : rb(b) {}
};

// usage:

bb b;
aa a(b);

Ve bir parametre gerektirir başlatılıyor temel sınıf örneği (varsayılan yapıcı gibi):

struct bb {};

struct dd
{
    char c;
    dd(char x) : c(x) {}
};

struct aa : dd
{
    bb& rb;
    aa(bb& b ) : dd('a'), rb(b) {}
};

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • Submissions101

    Submissions1

    23 ŞUBAT 2007