PDA

View Full Version : سوال: عملگر مجدد



mohammad1993
دوشنبه 23 مرداد 1391, 22:59 عصر
سلام کسی می دونه که تعریف مجدد عملگرها در C++‎ چیه؟چی کار باید کرد؟:ناراحت::ناراحت::ناراحت: :ناراحت:

hadi0x7c7
دوشنبه 23 مرداد 1391, 23:13 عصر
منظورتو نمی فهمم !
operator overloading ویژگی که زبان در اختیار ما میگذاره ! مثلا << واسه یه ADT l مثل Date طوری تعریف میکنیم که مثلا 2010:4:13 چاپ کنه. به صورت مستقیم !

the king
دوشنبه 23 مرداد 1391, 23:22 عصر
سلام کسی می دونه که تعریف مجدد عملگرها در C++‎ چیه؟چی کار باید کرد؟:ناراحت::ناراحت::ناراحت: :ناراحت:

وقتی یک نوع داده ای ساده مثل نوع داده عددی int دارید، کامپایلر می دونه که فرضا عملگر + چه کاری انجام میده، مقدار دو عبارت عددی رو با هم جمع می کنه
و نتیجه رو بصورت یک عدد دیگه بر می گردونه. اما وقتی خودتان یک کلاسی رو تعریف می کنید دیگه کامپایلر معنی عملگر + رو برای اشیاء این کلاس نمی دونه
و عملگر + برای این کلاس تعریف نشده است. شما با تعریف مجدد عملگر مشخص می کنید که فرضا عملگر + برای اشیاء این کلاس چه مفهومی داره و چه کاری
انجام میده و چه مقداری رو به عنوان نتیجه بر می گردونه.

فرضا برای کلاس Test عملگر + رو تعریف می کنید که چطور مقدار value دو شیء رو با هم جمع کنه و برگردونه :

Test operator+(const Test& a, const Test& b)
{
Test temp = a;
temp.value += b.value;
return temp;
}