SORU
7 Mart 2009, CUMARTESİ


Boş bir sınıf, bir nesnenin boyutu Nedir?C :

Bu ne olabilir diye merak ediyordumboş bir sınıf, bir nesnenin boyutu. Kesinlikle olabilirdeğilbaşvuru için mümkün olması ve diğer herhangi bir nesne gibi işaret gerektiğinden 0 bayt olarak. Ama, ne kadar büyük böyle bir nesne mi?

Bu küçük programı kullandım

#include <iostream>
using namespace std;

class Empty {};

int main()
{
    Empty e;
    cerr << sizeof(e) << endl;
    return 0;
}

Visual C ve özellik listesi-g Derleyiciler de var çıktı1 byte! Bu makine word (32 bit veya 4 bayt) boyutta olmasını bekliyordum beri benim için biraz şaşırtıcı oldu.

Kim açıklayabilirneden1 bayt büyüklüğünde?Neden olmasın4 bayt? Bu derleyici veya makineye bağlı? Ayrıca, biri boş bir sınıf nesnesi için bir neden daha ikna edici bir sebep olabilirolmazboyutu 0 bayt olarak?

CEVAP
7 Mart 2009, CUMARTESİ


Bjarne Stroustrup's C Style and Technique FAQ tırnak boyutu sıfır nedeni "iki farklı nesnelerin adresleri farklı olacak emin olmak İçin." Boyut ve hizalama aslında bakacak bir şey yok burada önemli değil çünkü 1 olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • Mark Halberstadt

    Mark Halbers

    19 ŞUBAT 2010
  • michaeljacksonVEVO

    michaeljacks

    2 EYLÜL 2009