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

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

نوع بازگشتی عملگر انتساب در سربارگذاری

0 امتیاز
87 نمایش

برای عملگر سربارگذاری شده انتساب چه نوع بازگشتی‌ای انتخاب کنیم؟

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

1 پاسخ

0 امتیاز

نوع بازگشتی می‌تونه void باشه یا هر نوع داده‌ای. اما بهتره که خود شی *this که فراخواننده است رو بفرستیم اون هم به صورت const تا مستقیماً مورد دسترسی قرار نگیره

class C
{
  const C& operator=(const C& obj)
  {
    ...
  }
};

در این صورت می‌تونیم از دستور زیر استفاده کنیم

C c1, c2, c3;
c1 = c2 = c3;

چون دستور بالا تبدیل به حالت زیر می‌شه در ارزیابی

c1 = (c2 = c3);

درون پرانتز، ابتدا اجرا می‌شه و انتساب مناسب اتفاق می افته. بعد از انتساب، یه ارجاع ثابت به c2 بر می‌گرده و بنابراین مثل اینه که نوشته باشیم

c1 = c2;

بنابراین دستور c1 = c2 = c3 معادل دو دستور c2 =c3; و c1 = c2 هست که پشت سر هم اجرا بشه.

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