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

  • audivila

    audivila

    5 HAZİRAN 2009
  • jbignacio

    jbignacio

    13 Mart 2006
  • Tomas N

    Tomas N

    14 Kasım 2010