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

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

قواعد اصلی و اصطلاحات در تعریف سربارگذاری عملگر چیست؟

0 امتیاز
1,657 نمایش

دستورات اصلی که برای سربارگذاری یک عملگر و تعریف اون استفاده میشه چی هستن؟

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

1 پاسخ

0 امتیاز

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

return_type operator operator_function_name([argument_list]);

به عنوان مثال

class Car {...};
Car operator*(Car &C1, Car &C2){...}
// or
Car Car::operator+(Car &otherCar){...}

چند تا نکته‌ی ابتدایی به صورت زیر هست
۱- تغییر تعداد آرگومان‌های یک تابع عملگر ممکن نیست.
۲- نوع برگشتی جزو امضای تابع نیست بنابراین در سربارگذاری الزامی در موردش وجود نداره.
۳- عملگرهای -، +، * و & هم به صورت یکانی و هم دوتایی قابل سربارگذاری هستن.
۴- عملگرهای .، .*، :: و ?: قابل سربارگذاری نیستن.
۵- چون عملگر روی اشیا کار می‌کنه نه کلاس‌ها، در صورتی که از شیوه‌ی اول استفاده می‌کنیم (تابع عضو) نباید به صورت ایستا تعریف بشه
۶- در صورتی که از شیوه‌ی دوم استفاده می‌کنیم (تابع دوست) آرگومان اول همون شی فراخواننده‌ی تابع عملگر (یعنی سمت چپ عملگر هنگام فراخوانی) هست. در مثال بالا C1. که در اجرای کد Car Car1, Car2, Car3; Car3 = Car1 + Car2; معادل Car1 هست.
۷- اولویت و تعداد آرگومان‌ها قابل تغییر نیست.
۸- به جز عملگر () در بقیه‌ی عملگرها نمی‌شه به آرگومان‌ها مقدار پیش‌فرض داد.
۹- سربارگذاری عملگرهای تخصیص و‌ آزادسازی حافظه (new، delete، new[] و delete[]) تابع قوانین مشخصی جدا از قوانین بالا هست.

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