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

  • HER0R

    HER0R

    16 Aralık 2007
  • Semantic Mastery

    Semantic Mas

    30 EKİM 2013
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008