ورود

View Full Version : سوال: تعریف مجدد عملگر های ++ و --



hatamiarash7
چهارشنبه 05 آذر 1393, 21:35 عصر
با عرض سلام و خسته نباشید خدمت شما عزیزان

یه کلاس نوشتم برای کار با اعداد گویا ( کسری ) و عملگر ها رو برای کار با این اعداد دوباره تعریف کردم ولی برای عملگر های ++ و -- مشکل دارم

مشکل اینجاست که این دوتا عملگر به عنوان پیشوند یا پسوند باید توابع جدایی داشته باشن

یکی از این توابع رو نوشتم ولی دقیق نمیدونم برای کدومش جواب میده ( پیشوندی یا پسوندی مثلا ++a , a++ ) اگه میشه اون یکی رو هم بگید بهم ..... یا اگه روش دیگه ای واسه تعریف این عملگر ها بلد هستید بگید ممنون

اسم کلاس : gooya
متغییر ها : s یعنی صورت و m یعنی مخرج


void operator ++ (gooya &a)
{
a.s = a.s + a.m;
}

void operator -- (gooya &a)
{
a.s = a.s - a.m;
}

aliv.2022
چهارشنبه 05 آذر 1393, 22:05 عصر
این که شما نوشتی حالت
++a
هست یعنی اول مقدار a زیاد میشه بعد ادامه کار!
برای حالت
a++
باید مقدار a رو بریزی تو یه متغیر temp بعد کارت که با a تموم شد، temp رو return کنی! اگه واضح نبود بنویسم!

hatamiarash7
چهارشنبه 05 آذر 1393, 22:22 عصر
این که شما نوشتی حالت
++a
هست یعنی اول مقدار a زیاد میشه بعد ادامه کار!
برای حالت
a++
باید مقدار a رو بریزی تو یه متغیر temp بعد کارت که با a تموم شد، temp رو return کنی! اگه واضح نبود بنویسم!

اخه جالب اینجاست تو تمام کتاب ها و جزوه ها گفتن که برای هر دو حالت پیشوندی و پسوندی باید توابع عملگر جدا تعریف کرد ولی با همونی که من نوشتم هم ++a جواب میده هم a++ .... حالا چه لزومی داره یکی دیگه تعریف بشه نمیدونم دیگه

aliv.2022
چهارشنبه 05 آذر 1393, 22:30 عصر
اخه جالب اینجاست تو تمام کتاب ها و جزوه ها گفتن که برای هر دو حالت پیشوندی و پسوندی باید توابع عملگر جدا تعریف کرد ولی با همونی که من نوشتم هم ++a جواب میده هم a++ .... حالا چه لزومی داره یکی دیگه تعریف بشه نمیدونم دیگه

نمیشه هر دو حالت الان جواب بده که با یه کد! از کجا می فهمه؟؟؟
ببینید کد b=a++ اول b رو برابر a قرار میده بعد مقدار a رو افزایش میده! اما b=++a اول a رو افزایش میده بعد میریزه داخل b
چیزی که شما نوشتی
a.s = a.s + a.m مقدار a.s+a.m رو حساب میکنه و داخل a.s میریزه! که یعنی حالت دوم!

aliv.2022
چهارشنبه 05 آذر 1393, 22:32 عصر
اگه میشه کدت رو کامل بذار ببینم چطوری داری ازش استفاده میکنی؟

omid_kma
چهارشنبه 05 آذر 1393, 23:05 عصر
operator ++ ای که ورودی داره پسوندی هست .
اگر ورودی نداشته باشه پیشوندیه .

برای نوشتن ++ هم اصولا اول پیشوندی رو مینویسن بعد برای پیاده سازی پسوندی از همون استفاده می کنن ( داخل تابع پسوندی اول یک کپی میگیریم بعد ++ پیشوندی رو صدا می زنیم )