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

  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008
  • Tire Rack

    Tire Rack

    31 Mayıs 2007