تکین وب | آموزش برنامه نویسی
تکین وب | آموزش برنامه نویسی

اشیاء و توابع ثابت در ++C

۲۷ آذر ۱۳۹۴

در یک برنامه ، برنامه نویس می تواند با استفاده از کلمه کلیدی const مشخص کند که یک شی یا یک متغیر غیر قابل تغییر بماند و هیچ عملی هم نتواند آن را تغییر دهد . چرا که هر عملی که منجر به تغییر آن شود باعث ایجاد خطا خواهد شد . در مثال کلاس date میتوانیم یک شیء ثابت را  به صورت زیر تعریف کنیم :

const date date1(1394,9,27);

شیء date1 به صورت const یا ثابت با مقدار سال ۱۳۹۴ و ماه ۹ و روز ۲۷ مقدار دهی اولیه شده است .

اما نکته ای که وجود دارد این است که کامپایلر در صورتی اجازه فراخوانی توابع عضو کلاس را به شیء ثابت می دهد که آن تابع هم ثابت باشد. حتی توابع ثابت هم نمی توانند مقدار یک شیء ثابت را تغییر دهند . برای تعریف یک تابع ثابت به صورت زیر عمل می کنیم :

int get_year() const;

فرض کنید بدنه ی این تابع عضو ، مقدار سال را برمی گرداند .برای پیاده سازی بدنه ی این تابع هم باید کلمه کلیدی const را به کار ببریم :

int date::get_year() const
{
return year ;
}

علاوه بر این تابع ، توابع دیگری نیز وجود دارند که ممکن است const نباشند . اما باید توجه کرد که نمی توان با اشیاء ثابت ، توابع غیر ثابت را فراخوانی نمود . اما می توان با اشیاء غیر ثابت توابع ثابت را فراخوانی کرد . برای مثال فرض کنید شی date2 ثابت نباشد . اما می توان در main تابع عضو دیگری که ثابت می باشد را با شیء date2 فراخوانی نمود :

 date date2(1394,9,25);
date2.get_year();

مقداردهی اولیه متغیرهای ثابت در constructor :

فرض کنید بخواهیم متغیری را در کلاس و در قسمت private به صورت const تعریف کنیم . همانطور که می دانید متغیرها را نمی توان در قسمت private یا public مقداردهی اولیه کرد و همه ی متغیرها باید در constructor مقداردهی اولیه شوند .

برای مثال متغیر count را  const و متغیر increment را در private کلاس Increment به صورت زیر تعریف می کنیم :

private:
const int count;
int incriment;

سازنده این کلاس دو مقدار را به عنوان پارانتر ورودی دریافت می کند . برای مقداردهی به متغیرهای قسمت private از روش زیر استفاده می کنیم :

Increment::Increment(int i , int c):count(i) , increment(c)
{
//empty body
}

در این نوع مقداردهی باید بعد از تعریف الگوی constructor از علامت و برای جدا کردن متغیرهایی که می خواهیم مقداردهی اولیه کنیم از علامت کاما استفاده می کنیم . توجه کنید که متغیر هایی که ثابت هستند حتما باید به این صورت مقداردهی اولیه شوند اما متغیرهای غیرثابت علاوه بر روش قبلی که در بخش قبلی بیان شد ، می توانند به این روش هم مقداردهی شوند .اگر متغیرهای ثابت را به روش قبلی و در بدنه ی constructor مقداردهی کنید ، یک خطا محسوب می شود . بنابراین در این تکه کد مقدار count با i و مقدار increment با c مقداردهی اولیه شده است .

در ضمن اگر اینستاگرامی هستید حتما @Takinweb را فالو کنید….

درباره ی عطیه رحمانی

دیدگاه ها

یک دیدگاه ارسال شده !

  1. HSN می‌گه:

    خیلی ممنون
    فقط اگه امکانش هست،بیشتر توضیح بدید.D;

دیدگاه خود را به ما بگویید.

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