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

  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012
  • Vsauce

    Vsauce

    30 Temmuz 2007