मुझे क्या पता है, c ++ में एक वर्ग का आकार नीचे के कारकों पर निर्भर करता है -
- सभी गैर-स्थैतिक डेटा सदस्यों का आकार।
- डेटा सदस्यों का आदेश।
- यदि बाइट पैडिंग सक्षम है या नहीं।
- इसके तत्काल आधार वर्ग का आकार।
- आभासी कार्यों का अस्तित्व।
- वंशानुक्रम की विधि (वर्चुअल इनहेरिटेंस)।
अब मैंने नीचे 2 वर्ग बनाए हैं -
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;
};
अब A और BI के आकार की जाँच करें
- A का आकार: 16
- बी का आकार: 16
मेरी धारणा है कि कक्षा B में चार सी को "A" में समायोजित किया गया है, कक्षा A में छोड़ दिया गया है।
लेकिन, व्हाट्स ने मुझे उलझन में डाल दिया है कि मैं किस सदस्य को सार्वजनिक करूं
class A{
public:
int a;
short d;
int b;
char s;
};
class B : public A{
public:
char c;
};
अब आकार बन जाता है
- A का आकार: 16
- बी का आकार: २०
मैं इस अंतर का कारण नहीं समझ सकता।