SORU
15 AĞUSTOS 2011, PAZARTESİ


==≫ yapı C 11 bu deli sözdizimi: {} bar foo {};?

Bu muhtemelen C 11 ne anlama geliyor?

struct : bar {} foo {};

CEVAP
15 AĞUSTOS 2011, PAZARTESİ


İlk olarak, bir bataklık standart soyut bir UDT alacağız (Kullanıcı Tanımlı Türü):

struct foo { virtual void f() = 0; }; // normal abstract type
foo obj;
// error: cannot declare variable 'obj' to be of abstract type 'foo'

Yine unutmayalım ki, biz onu tanımlayan aynı zamanda UDT örneğini verebiliriz hatırlayın:

struct foo { foo() { cout << "!"; } };          // just a definition

struct foo { foo() { cout << "!"; } } instance; // so much more
// Output: "!"

Hadi örnekler birleştirir ve bir UDT tanımlayabiliriz hatırlayınisim yok:

struct { virtual void f() = 0; } instance; // unnamed abstract type
// error: cannot declare variable 'instance' to be of abstract type '<anonymous struct>'

Anonim UDT ispat hakkında daha fazla ihtiyacımız yok, saf sanal işlevi kaybedebiliriz. foo, instance adlandırma ile sol konum da

struct {} foo;

Yaklaşıyor.


Şimdi, Eğer bu anonim UDT bazı temel kaynaklanıyor olsa ne olur?

struct bar {};       // base UDT
struct : bar {} foo; // anonymous derived UDT, and instance thereof

Son olarak, C 11 tanıttıgenişletilmiş initialisersböyle kafa karıştırıcı şeyler yapabileceğimiz gibi,

int x{0};

Ve bu:

int x{};

Ve, son olarak, bu:

struct : bar {} foo {};

Bu isimsiz bir yapı bar, foo örneği boş bir başlatıcı ile türetmek.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ampisound

    Ampisound

    12 Kasım 2006
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • Perihelion

    Perihelion

    23 NİSAN 2008