تاثیر تعداد توابع یک کلاس روی سایز آن - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تاثیر تعداد توابع یک کلاس روی سایز آن

+4 امتیاز

آیا تعداد توابعی که داخل یک کلاس یا struct تعریف میشه در سایزش تاثیری داره ؟

اگر مثلا داخل کلاس با تعداد توابع زیاد یک وکتور از خودش بسازیم حجمش خیلی زیاد میشه ؟

class MClass{
//a lot of functions
private:
       vector<MClass> data;
}

 

سوال شده شهریور 2, 1393  بوسیله ی MsM (امتیاز 108)   3 4 13
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade

1 پاسخ

+5 امتیاز
 
بهترین پاسخ

تعداد توابع هیچ تاثیری روی اندازه ی یک ساختار یا یک کلاس نداره .

فقط زمانی که یک کلاس یک متد virtual  یا بیشتر داشته باشه ، یک جدول توابع مجازی (Virtual Function Table ) برای اون کلاس درست میشه و

یه اشاره گر به اون جدول داخل کلاستون گذاشته میشه . یعنی به اندازه یک اشاره گر (در حالت ۳۲بیتی ۴ بایت و در حالت ۶۴بیتی ۸ بایت ) به اندازه کلاس اضافه میشه .

اگر یک vector داخل کلاستون بزارید ، اندازه ی اون شی vector به اندازه ی کلاستون اضافه میشه و یک شی vector حافظه ی داده های اصلیش رو از Heap میگیره نه از Stack یا جای دیگه . اگه به vector چیزی اضافه کردید ( مثلا با ()push_back  متغییری داخلش گذاشتید ) اندازه کلاس تغییری پیدا نمیکنه .

پاسخ داده شده شهریور 3, 1393 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
انتخاب شد شهریور 4, 1393 بوسیله ی BlueBlade
...