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

  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • TechShowsYou

    TechShowsYou

    3 Mart 2011
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008