আমি যা জানি, সেখান থেকে সি ++ এ শ্রেণীর আকার নীচের কারণগুলির উপর নির্ভর করে -
- সমস্ত অ স্থিতিশীল ডেটা সদস্যের আকার।
- ডেটা সদস্যদের অর্ডার।
- যদি বাইট প্যাডিং সক্ষম থাকে বা না হয়।
- এর তাত্ক্ষণিক বেস শ্রেণীর আকার।
- ভার্চুয়াল ফাংশনগুলির অস্তিত্ব।
- উত্তরাধিকারের পদ্ধতি (ভার্চুয়াল উত্তরাধিকার)।
এখন আমি নীচের মতো 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 এর আকার: 16
- বি আকার: 16
আমার ধারনা বি ক্লাসের চর সিটি ক্লাস এ-তে বাম "গর্তে" থাকার ব্যবস্থা করা হয়েছে is
তবে, আমাকে যা বিভ্রান্ত করেছে তা হ'ল নীচের দৃশ্যে আমি সদস্যদের পাবলিক করি
class A{
public:
int a;
short d;
int b;
char s;
};
class B : public A{
public:
char c;
};
এখন আকার হয়ে যায়
- A এর আকার: 16
- বি আকার: 20
আমি এই পার্থক্যের কারণ বুঝতে পারি না।