آموزش C++

مباحث پایه زبان C++

کلاس های حافظه در زبان C++ – آموزش زبان C++

  • دوشنبه ۱۲ شهریور ۱۳۹۷
  • بازدید ۲,۸۱۱ نفر

تصویر cpp-storage-classes_3884 کلاس های حافظه در زبان C++ - آموزش زبان C++

کلاس های حافظه در زبان C++

کلاس های حافظه در زبان C++ محدوه و عمر یک متغیر یا تابع را مشخص می کند. در زبان برنامه نویسی C++، چهار نوع حافظه برای ذخیره سازی متغیرها وجود دارد.

انواع کلاس های حافظه در زبان C++

  • auto
  • register
  • static
  • extern
  • mutable

کلاس حافظه auto

auto در زبان C++، به عنوان کلاس حافظه پیشفرض در نظر گرفته شده است. یعنی هر متغیری که نوع کلاس حافظه اش مشخص نشود، auto خواهد بود.

مثال فوق دو متغیر را در یک کلاس حافظه یکسان تعریف می کند. کلاس حافظه auto فقط در داخل محدوده ای که تعریف می شود، قابل دسترسی است.

کلاس حافظه register

کلاس حافظه register برای تعریف متغیرهای محلی استفاده می شود و به جای RAM در register ذخیره می شود.

کلاس حافظه register فقط برای متغیرهایی که نیاز به دسترسی سریع دارند (مانند شمارنده حلقه ها) استفاده می شود. توجه داشته باشید که در هنگام استفاده از کلاس حافظه register ممکن است اختصاص فضا ناموفق باشد.

کلاس حافظه static

متغیرهایی که در کلاس حافظه static تعریف شوند، تا پایان برنامه مقداری که آخرین بار به آن ها داده شده است را حفظ می کنند و خارج از محدوده ای که تعریف می شوند نیز قابل دسترسی هستند. زمانی که یک متغیر سراسری به صورت static تعریف شود، فقط در فایلی که اعلان شده است قابل دسترسی است.

مثال زیر عملکرد کلاس حافظه static را نشان می دهد:

امتحان کنید

پس از اجرای کد بالا توسط کامپایلر زبان C++ خروجی زیر بدست خواهد آمد:

کلاس حافظه extern

کلاس ذخیره سازی خارجی برای ارجاع به یک متغیر جهانی که برای همه فایل های برنامه قابل مشاهده است استفاده می شود. با استفاده از extern، متغیر نمی تواند مقداردهی اولیه شود، اما نام متغیر را در یک مکان ذخیره سازی که قبلا تعریف شده است، نشان می دهد. کلاس حافظه extern برای دسترسی به متغیرهای سراسری که در فایل های مختلف یک پروژه تعریف شده اند، استفاده می شود. هنگام استفاده از extern نمی توانید به متغیر مقدار اولیه دهید و فقط آن را اعلان می کنید.

از کلاس حافظه extern اغلب در پروژه های بزرگ که از چندین فایل تشکیل می شوند استفاده می شود. مثال زیر به خوبی نحوه استفاده از کلاس حافظه extern را نشان می دهد:

محتوای فایل main.c

محتوای فایل support.c

خط extern void write_extern(); در فایل main.c تابعی که در فایل support.c تعریف شده است را اعلان می کند و به کامپایل می گوید که همچنین تابعی وجود دارد.

خط extern int count; برای دسترسی به متغیر سراسری count که در فایل main.c تعریف شده است استفاده می شود.

این دو فایل به صورت زیر کامپایل می شوند:

نتیجه کامپایل و اجرای کد بالا:

کلاس حافظه mutable

این کلاس حافظه در کلاس ها استفاده می شود. هنگامی که شما یک شیء از کلاس را به صورت const تعریف کنید، نمی توانید مقادیر اعضای آن را تغییر دهید. اما اگر عضوی از آن کلاس به صورت mutable تعریف شود، می توان در حال const هم مقدار آن را تغییر داد. در بخش های بعدی در مورد این کلاس حافظه بیشتر توضیح داده می شود.

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است