PDA

View Full Version : بارگزاری اضافه در c++ يعنی چی؟



adameh_bahal
جمعه 07 فروردین 1388, 11:42 صبح
من يه پروژه دارم که خاسته شده کلاس اعداد مختلط رو طراحی کنيم و اپراتورهای جمع و تفريق رو براش بارگزاری اضافه کنيم
حالا من اصلاً نميدونم اين بارگزاری اضافه چی هست
ميخوام اگه ميشه يه منبع که ساده و مختصر در اين مورد توضيح داده شده باشه بهم معرفی کنيد

cups_of_java
جمعه 07 فروردین 1388, 13:03 عصر
بارگذاری اضافه اصطلاح اشتباهی هست. حتی ترجمه "سربارگذاری" هم اشتباهه!
این کار Operator Overloading هستش که می تونی تو گوگل سرچ کنی و کلی مثال تو سی پلاس پلاس ازش ببینی.

adameh_bahal
جمعه 07 فروردین 1388, 17:02 عصر
بارگذاری اضافه اصطلاح اشتباهی هست. حتی ترجمه "سربارگذاری" هم اشتباهه!
این کار Operator Overloading هستش که می تونی تو گوگل سرچ کنی و کلی مثال تو سی پلاس پلاس ازش ببینی.

ولی من اصلاً نميدونم خودش چی هست که بخوام مثالی ازش رو بفهمم

cups_of_java
جمعه 07 فروردین 1388, 18:32 عصر
operator overloading تغییر رفتار یک اپراتور تعریف شده در زبان هست برای انواع مختلف
مثلن اپراتور جمع + برای انواع کلاس هایی که شما تعریف می کنید که از قبل تعریف نشده و فقط برای اعداد و ... کار می کنه. شما این اپراتور رو برای کلاس خودتون تعریف می کنید تا بشه دو تا شی از کلاس شما رو هم با هم جمع کرد. معنای این عمل جمع رو هم در پیاده سازی می آرید. هر اپراتوری به صورت یک تابع تعریف می شه که بدنش همون پیاده سازی مربوط خواهد بود.
به کتاب و یا گوگل مراجعه کنید. همین مثال اعداد مختلط باید باشه. (بگردید دنبال یه چیزی شبیه این:)
operator overloading for complex class cpp

afi_program
شنبه 08 فروردین 1388, 16:57 عصر
جواب دوستمون کامل بود فقط می خواستم به adameh-bahal پیشنهاد بکنم که :سعی کن اصطلاحات مربوط به برنامه نویسی و علم رایانه را کلمات اصلی(لاتین یا انگلیسی)را حتما بلد باش بعد معادل فارسی شونم یاد گرفتی که چه بهتر
اگه سوالی هست در خدمتم:چشمک:

adameh_bahal
سه شنبه 18 فروردین 1388, 19:41 عصر
الان تو اين برنامه چرا درست عمل نميکنه و فقط يه مقدار ثابت ميده؟

#include <iostream>
using namespace std;
class complex
{
public:
complex ();
complex(double , double );
complex sum(complex);
void print();

private:
double realpart;
double imaginarypart;
};
int main()
{
complex m(1,2),c(3.2,5);
complex a=m.sum(c);
a.print();
return 0;
}

complex::complex(double r, double m)
{
realpart=r;
imaginarypart=m;
}
complex::complex()
{
realpart=0;
imaginarypart=0;
}
complex complex::sum(complex x)
{
complex z;
z.realpart=realpart+x.realpart;
z.imaginarypart=imaginarypart+x.imaginarypart;
return z;
}
void complex::print()
{
cout<<realpart<<"+"<<imaginarypart<<"i"<<endl;
}

afi_program
چهارشنبه 19 فروردین 1388, 13:31 عصر
به نظرم هنوز متوجه نشدین بارگذاری اضافه چیه چون این کاری که شما انجام دادینoverloading نیست و شما فقط یک متد برای این کار ایجاد کردید
اما اینکه همیشه یک جواب میده یه چیز دیگس که ظاهرا چیزی که شما نوشتین همیشه یک مقدار به متد sum میفرسته و طبیعیه که جواب هم تغییر نکنه
اگه اشتباه گفتم تصحیح بفرمایید(بیشتر منظورم روی کده چون بقیه مطلب چیزی نداره که غلط باشه)
بازم در خدمتم