boş sınıfın büyüklüğü ve c ++ 'da sendika, yapı ve sınıf arasındaki fark nedir?

boş sınıfın büyüklüğü ve c ++ 'da sendika, yapı ve sınıf arasındaki fark nedir?

Benim fikrim:

İçinde hiç statik üye yoksa, tüm üyeler yığına ayrıldığı için aynı olmalıdır.

Hepsi boşsa, aynıdır.

Statik üyeler varsa, içlerindeki üyelerin göreceli konumuna bağlıdır.

sağ ?

Teşekkürler

1
Bir türün boyutu, statik veri üyelerinin varlığından etkilenmez.
katma yazar ildjarn, kaynak
pl0x'ı netleştir - oldukça belirsiz soru
katma yazar slartibartfast, kaynak

2 cevap

class == struct the only difference is that in a struct, all members i.e. ivars and methods are public by default.

Statik üyeler yani değişkenler veya yöntemler, belirli bir örneğe ait olmadıkları anlamda sınıf/yapının bir parçası değildir. bu yüzden bir boyut onları içermeyecektir.

union is not a class nor struct, Union is used to map a struct to a particular memory layout.

Boyutu almak için bir örnek değişkeni sizeof() yapın ve göreceksiniz.

2
katma

C ++ Standart standart, bir Boş sınıfın boyutunun Sıfır Olmayan olması gerektiğini belirtir.
Genellikle, çoğu sistemde 1 bayttır.

In Bjarne Stroustrup's words, the size is non-zero "To ensure that the addresses of two different objects will be different."

Boyut, çoğu sistemde 1 şeklindedir; çünkü sınıf adının girişi, benzersiz bir adres elde etmek için sembol tablosunda girildiği için hizalama kuralları önemli değildir.

Standerdese hayranları için:
C ++ 03 Standart Bölüm 9: Dersler, Para 2:

Sınıf türünün tamamlanmış nesneleri ve üye alt objeleri sıfırdan büyük olmalıdır.   94)

1
katma
0'dan büyük herhangi bir boyutta standart olarak tanımlanmıştır
katma yazar Dani, kaynak
Sonra size göre sınıf adı, benzersiz bir adres elde etmek için sembol tablosunda yapılır, bu yüzden boş sınıfın boyutu 1'dir. O zaman neden boş yapının boyutu 0?
katma yazar devsda, kaynak
Bunu okuduğum bir yerde, stackOverflow'taki herhangi bir gönderide olabilir. Yanlış kavramımı düzeltmek için teşekkürler.
katma yazar devsda, kaynak
@jhamb: Boş bir yapının boyutu Sıfır değil (genellikle 1 ) C içinde C ++ 'nın yanı sıra. ifadesi için referansınız nedir? boş yapının boyutu < code> 0 "
katma yazar Alok Save, kaynak