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

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

سربارگذاری عملگرهای ترکیبی

+1 امتیاز
76 نمایش

آیا در مورد عملگرهای >= یا <= یا != نیازی هست که سربارگذاری انجام بشه؟
چون به نظر میاد میشه در C++ مثلا نوشت operator!= برای != یا مثلا برای <= از !> استفاده بشه.
آیا همینجوریه یا لازمه هر عملگری جداگانه سربارگذاری بشه.

یک مشکل در مورد C++ این است که هم‌اکنون گرایشی قوی در زبان وجود دارد که شما را وادار می‌کند پیش از انجام هر کاری، همه‌ی جوانب آن را بدانید. (Larry Wall)
پرسیده شده یکشنبه ۲۵ فروردین ۱۳۹۲ در C++ توسط CPP_Crawler2  
ویرایش شده پنجشنبه ۹ خرداد ۱۳۹۲ توسط admin

1 پاسخ

0 امتیاز

۱- اگه عملگرهای = و + رو سربارگذاری کرده باشین بدیهی هست که می‌تونین عملگر ترکیبی رو به صورت زیر پیاده‌سازی کنین

const class & operator+=(const class &other)
{
  *this = *this + other;
  return *this;
}

این کار یه مزیت عمده و یه عیب عمده داره
مزیت: جلوگیری از تکرار کدهای زیاد و بزرگ‌شدن حجم کد و آسان شدن تغییرات بعدی.
عیب: ایجاد، انتساب و فراخوانی‌های بیشتر نسبت به حالت مستقیم

بنابراین نسبت به کاربرد خودتون انتخاب کنین از کدوم شیوه استفاده کنین

یه نکته این که می‌تونین عملگر رو به صورت درخط (inline) تعریف کرد که مشکلات گفته شده رو حل کرد و در عین حال از مزیت گفته شده استفاده کرد. اما توجه داشته باشین که در کامپایلرهای جدید inline توسط کامپایلر تقریباً نادیده گرفته می‌شه.

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