PDA

View Full Version : مبتدی: سربار گذاری اپراتورها در یک کلاس



smemamian
جمعه 01 دی 1391, 23:08 عصر
سلام دوستان
خط 27 و 28 رو اصلا نمی فهمم ! در مورد سربارگذاری عملگرها مطالعه کردم و مفهوم رو متوجه شدم
ولی توی برنامه مشکل دارم !
ممنون میشم دوستان تک تک (temp.x - x - ob2.x) توضیح بدین .

#include <cstdlib>
#include <iostream>

using namespace std;
class coord{

int x , y ;
public :
coord()
{
x = 0 ; y = 0 ;
}
coord(int i , int j)
{
x = i ; y = j ;
}
void get(int &i , int &j)
{
i = x ; j = y ;
}
coord operator+(coord ob2);
};

coord coord::operator+(coord ob2)
{
coord temp;
temp.x = x + ob2.x ;
temp.y = y + ob2.y ;
return temp ;
}
int main(int argc, char *argv[])
{
coord o1(10 , 10) , o2(5,3) , o3 ;
int x , y ;
o3 = o1 + o2 ;
o3.get(x , y);
cout << x << "\t" << y << endl ;
system("PAUSE");
return EXIT_SUCCESS;
}

aidinMC
جمعه 01 دی 1391, 23:24 عصر
ببین یه شی از خود کلاس به عنوان تمپ میسازه که نتیجه ی جمع رو تو اون بریزه ، اگه تو توجه کنی تمپ returne میشه ، اون ob2 که بعنوان آرگومان ارسال شده سمت راست علامت + هستش ، x و y ی هم که میبینی توسط خود سی ++ (یکی از قابلیتهای برتر این زبانه ) فراخانی میشه ، یعنی درواقع سمت چپ علامت + هستش...

omidshaman
جمعه 01 دی 1391, 23:28 عصر
coord coord::operator+(coord ob2)
یک فانکشن مثل بقیه فانکشن ها با این تفاوت که می تونی علاوه بر

a.operator+ (b)//daghighan moshabehe a.get(b) baraye mesal
از a+b برای رجوع بهش استفاده کنی
تو این کد شما به operator+ در کلاس o1 یک کلاس میفرستین به اسم o2
خط 26 یک کلاس از نوع coord میسازه با اسم temp
خط 27 مولفه xکلاس temp رو میزاره xکلاس o1 (چون درون فانکشن کلاس o1 هستیم x میشه x کلاس o1)باضافه x کلاس o2( و ob همون o2 ست که فرستادیم به کلاس پس ob.x میشه x کلاس o2(
خط28 مولفه yکلاس temp رو میزاره yکلاس o1 باضافهy کلاس o2
و تو خط 29 کلاس بر می گرده و o3 برابر این کلاسی که برگشته یعنی temp میشه

smemamian
شنبه 02 دی 1391, 00:19 صبح
نمی دونم درست فهمیدم یا نه ولی یه بار میگم :
temp باید یک مقدار x و y رو برگرداند پس :
temp.x = x + ob2.x ; ایکس (x) مقدار ایکس شی اول وایکس(x) مقدار شی دوم هستش !؟

aidinMC
شنبه 02 دی 1391, 00:40 صبح
احسن دقیقا همینه