السلام عليكم ورحمة الله وبركاته ..
كما عودتكم اخوتي .. على الاسئله القوية والتي تجعل الشخص يفكر بما امامه وهو متاكد من هذا صعب الحصول .. ولكنه يحصل .. سبب الحصول هو ما اريده في اغلب الاحيان .. وما اريده هو الان سبب ما حدث في مايلي ..
لدينا الكود التالي ..
class x {
};
class y {
int n;
};
void main() {
cout << sizeof(x)<<endl;
cout << sizeof(y) <<endl;
}كود واضح .. ولكن تفسير سريع له .. قمت بتعريف الصنف الفارغ x والذي لايحتوي اي معلومات بداخله ..وبعده عرفت الصنف y والذي يحتوي على متغير n من نوع صحيح ..
وبعد القيام بعملية معرفة الحجم في الدالة main .. ضهرت لنا نتيجة غريبه نوعا ما ..
وهي .. ان الصنف الاول رغم انه لايحتوي اي شئ فان حجمه ثابت وهو 1 ..
والصنف الثاني حجمه هو بحجم المتغير الذي بداخله ( لدي الربو سي 3 ) ضهر لي حجمه 2 .. واذا كنتم تستعملون مترجم اخر فقيمة المتغير من الممكن ان تختلف .
اذا .. السؤال هو التالي ..
لو فرضنا كما هو الحال في جميع المترجمات ان int ياخذ 2 ..
ماهو سبب ضهور حجم الصنف الاول 1 على الرغم من انه فارغ .. بينما الصنف الثاني اضهر حجم الصنف 2 وهو نفسه حجم المتغير ..؟؟ ولم يضف اليه 1 كما في الصنف الفارغ ..لكي يصبح 3 .. (1 من الصنف و2 من المتغير 2 +1 = 3 ) ..؟؟؟؟؟؟؟
استخدموا القاعده التي اتبعها دائما في اي سؤال يطرح علي (بسيط كان ام صعب) .. فكر .. حلل .. اجب ..
انتظر ردودكم واجابتكم .. والاجابات تكون هنا بالموضوع لكي يستفيد الجميع فهو سؤال وليس لغز ..
تحياتي العطرة للجميع ...


