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

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

چرا نمی‌شه به عملگرها (به استثناء پرانتز) مقدار پیش‌فرض داد؟

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

دلیل این کار چیه؟ عملگر سربارگذاری شده به عنوان یک تابع باید بتونه مقدار پیش‌فرض داشته باشه. نهایتاً اینه که ازش استفاده‌ای نمی‌شه. درسته؟
کدی که سربارگذاری عملگر تولید می‌کنه به چه شکلیه که مقدار پیش‌فرض و ناممکن می‌کنه؟
یا این‌که شاید این نشدن یه قاعده‌ست که قبل از کامپایل رعایت می‌شه . ربطی به زبان ماشین نداره؟

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

1 پاسخ

0 امتیاز

تقریباً مشخصه که چرا نمی‌شه این کار و کرد. فرض کنید بتونیم یه عملگر به شکل زیر سربارگذاری کنیم

const class& operator+(itn x=0){ ... }

در این صورت نوشتن کد زیر باید معتبر باشه

class obj1, obj2;
obj1 = obj2+;

(با فرض این که عملگر = هم سربارگذاری شده)

که طبیعتاً دوست نداریم امکان نوشتن چنین کدی باشه. حالا بیایم فرض کنیم که امکان نوشتن این کد رو هم مهیا کنیم. با کد زیر چکار می‌کنیم؟

obj2 = obj1++;

به هر حال کد بالا می‌تونه هم به عنوان عملگر افزایشی (++) در نظر گرفته بشه هم به عنوان دو عملگر جمع پشت سر هم.

به طور کلی اگه مقدار پیش‌فرض برای عملگرها ممکن باشه مشکلات زیادی به این صورت پیش می‌آد.

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