اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تفاوت این دو نوع تعریف داده بصورت const چیست؟

+1 امتیاز
1,514 نمایش

تفاوت بین این دو خط دستور چیست؟

A const * pa2 = pa1;

و

A * const pa2 = pa1;

(فرض کنیم کلاسی به اسم A داشته باشیم.)

پرسیده شده دوشنبه ۱۲ فروردین ۱۳۹۲ در C++ توسط CPP_Crawler4  

1 پاسخ

0 امتیاز

در واقع برای تعریف کردن اشاره‌گر به const یا اشاره‌گر const به شی سه کد زیر ممکنه استفاده بشه

A * const
const A *
A const *

مورد اول اشاره‌گر ثابت به یک شی دلخواه هست. یعنی اشاره‌گر قابل تغییر نیست ولی مقدار اون که یه شی معمولی هست قابل تغییره

int x = 10;
int * const px = &x;
*px = 11; // it's OK
px++; // error

دو مورد دیگه اشاره‌گر به شی ثابت هست یعنی خود اشاره‌گر می‌تونه تغییر کنه اما شی‌ای که بهش اشاره می‌شه قابل تغییر نیست.

int x = 10;
const int * px = &x;
*px = 11; // error
px++; // it's OK

int x = 10;
int const * px = &x;
*px = 11; // error
px++; // it's OK

چیزی که باید دقت کرد این هست که const بودن خصوصیت ذاتی خود متغیر مورد اشاره نیست. در مثال‌های بالا x به صورت const int تعریف نشده بلکه به صورت int تعریف شده است. بلکه اشاره‌گر هنگام اشاره کردن متغیر مورد اشاره را به صورت const تعریف می‌کند. یعنی مقدار متغیر از طریق اشاره‌گر قابل تغییر نیست ولی ممکنه خود متغیر رو بشه مستقیماً تغییر داد.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده چهارشنبه ۱۹ تیر ۱۳۹۲ توسط prodo