SORU
23 EYLÜL 2008, Salı


C açık kelime anlamı nedir?

Birisi C explicit Kelime Anlamı Hakkında başka bir soru için bir açıklama yayınladı . Ne anlama geliyor?

CEVAP
23 EYLÜL 2008, Salı


C derleyici , bir işlev için parametreler gidermek için bir örtük dönüştürme yapmak için izin verilir. Bu ne demek, derleyici kurucular çağrı ile kullanabilirsiniztek parametrebir parametre için doğru tür almak için bir tür diğerine dönüştürmek. İşte örtülü dönüşüm için kullanılabilecek bir kurucu sınıfı: bir örnek

class Foo
{
public:
  // single parameter constructor, can be used as an implicit conversion
  Foo (int foo) : m_foo (foo) 
  {
  }

  int GetFoo () { return m_foo; }

private:
  int m_foo;
};

İşte Foo bir nesneyi alır basit bir fonksiyon:

void DoBar (Foo foo)
{
  int i = foo.GetFoo ();
}

ve burada DoBar fonksiyon denir.

int main ()
{
  DoBar (42);
}

Parametre Foo bir nesne değil, ama int. Ancak, bu yapıcı, doğru türde parametre dönüştürmek için kullanılabilir int alır Foo için bir kurucu var.

Derleyici bu kez her parametre için izin verilir.

Kurucu explicit anahtar başına örtülü dönüşüm için bu oluşturucu kullanarak derleyici engeller. Yukarıdaki sınıf ekleme bir işlev çağrısı derleyici bir hata oluşturur DoBar (42). Şimdi açıkça DoBar (Foo (42)) ile dönüşüm için aramak gereklidir

Bunu yapmak isteyebilirsiniz neden böcek gizleyebilirsiniz kaza sonucu inşaat önlemek için. Yapmacık örnek:

  • Verilen boyutta bir dize oluşturur yapıcı MyString(int size) bir sınıf var. print(const MyString&) print(3) ile bir arama fonksiyonu var. Yazdırmak için beklediğiniz "3", ama uzunluğu 3 boş bir dize yerine yazdırır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS

    ASUS

    22 EKİM 2005
  • mobilenet.cz

    mobilenet.cz

    26 NİSAN 2008
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009