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

تعریف مقدار ثابت در داخل کلاس

+2 امتیاز

سلام.

چرا نمیشه توی کلاس یک ثابت عضو کلاس تعریف کنیم؟ چرا حتماً باید با کلمه کلیدی static مشخصش کنیم؟

اینم خطاش

only static const integral data members can be initialized within a class

سوال شده فروردین 29, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز
 
بهترین پاسخ
عضو ثابت (const) یعنی اینکه باید در زمان-کامپایل مقدار دهی بشن . نه در زمان-اجرا . و در Data Segment ذخیره میشن و فقط-خواندنی هستند .

وقتی که شما یک شی از یک کلاس درست میکنید ( میتونید توی هر قسمت این شی رو درست کنید  : توی Stack یا Heap یا Global یا ...‌)

هم میتونید زمان-کامپایل بهش مقدار بدید و هم زمان-اجرا . ولی اگه این شی عضو ثابت داشته باشه و static نباشه برای هر شی یک دونه از این عضو درست میشه . حالا شاید شما این شی رو در هر جایی درست کنی . و چون ثابت ها در Data Segment ذخیره میشن و از طرفی شی شما بدلیل داشتن نوع انتخاب میتونه توی خیلی جاها ذخیره بشه همچین کاری رو کامپیالر اجازه نمیده . بدلیل اینکه این ۲ تا با هم همخونی ندارن . پس اون رو بصورت static تعریف میکنید که برای همه ی اشیا مشترک باشه و حتما هم باید زمان-کامپایل بهش مقدار بدید تا کامپایلر اون رو در Segment مناسب ذخیره کنه .
پاسخ داده شده فروردین 29, 1393 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
انتخاب شد فروردین 29, 1393 بوسیله ی Xavi
...