تقریباً مشخصه که چرا نمیشه این کار و کرد. فرض کنید بتونیم یه عملگر به شکل زیر سربارگذاری کنیم
const class& operator+(itn x=0){ ... }
در این صورت نوشتن کد زیر باید معتبر باشه
class obj1, obj2;
obj1 = obj2+;
(با فرض این که عملگر = هم سربارگذاری شده)
که طبیعتاً دوست نداریم امکان نوشتن چنین کدی باشه. حالا بیایم فرض کنیم که امکان نوشتن این کد رو هم مهیا کنیم. با کد زیر چکار میکنیم؟
obj2 = obj1++;
به هر حال کد بالا میتونه هم به عنوان عملگر افزایشی (++
) در نظر گرفته بشه هم به عنوان دو عملگر جمع پشت سر هم.
به طور کلی اگه مقدار پیشفرض برای عملگرها ممکن باشه مشکلات زیادی به این صورت پیش میآد.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)