Bildiğim kadarıyla, c ++ 'da bir sınıfın boyutu aşağıdaki faktörlere bağlıdır -
- Statik olmayan tüm veri üyelerinin boyutu.
- Veri üyelerinin sırası.
- Bayt dolgusu etkin veya etkin değilse.
- Temel taban sınıfının büyüklüğü.
- Sanal fonksiyonların varlığı.
- Kalıtım modu (sanal kalıtım).
Şimdi aşağıdaki gibi 2 sınıf oluşturdum -
class A{
int a;
short s;
int b;
char d;
};// kept a char at last on purpose to leave a "hole"
class B : public A{
char c;
};
şimdi A ve BI boyutlarını kontrol etmeye bakın
- A boyutu: 16
- B boyutu: 16
benim varsayımım, B sınıfındaki char c, A sınıfında kalan "delik" içine yerleştirilir.
Ancak, kafamı karıştıran, üyeleri herkese açık hale getirdiğim aşağıdaki senaryo
class A{
public:
int a;
short d;
int b;
char s;
};
class B : public A{
public:
char c;
};
Şimdi boyut
- A boyutu: 16
- B boyutu: 20
Bu farkın nedenini anlayamıyorum.