سربار گذاری عملگر = (C++)
در پست های قبل با مفهوم "سربارگذاری" یا OverLoading آشنا شدیم؛ در این پست سربارگذاری عملگر "جایگزینی" ( = ) را برای یک کلاس دلخواه نشان خواهیم داد. به صورت عادی از عملگر جایگزینی برای جایگزین کردن مقدار یک متغیر در یک متغیر دیگر استفاده می کنیم؛ همچنین میتوانیم این جایگزینی را به صورت ترتیبی نیز انجام دهیم. برای مثال فرض کنید که سه متغیر صحیح به نام های a ، b و c در اختیار دارید. به صورت زیر میتوانید مقدار متغیر a را به صورت ترتیبی در دو متغیر دیگر جایگزین کنید.
c = b = a;
در این صورت مقدار a ابتدا در متغیر b و سپس مقدار b در متغیر c کپی خواهد شد. همین کار را میتوانید با استفاده از سربارگذاری برای اشیاء یک کلاس انجام دهید. به کلاس زیر را دقت کنید.
class Sample
{ public :
// constructor
Sample (int Input)
{
a = Input;
}
// overloading =
Sample& operator= (const Sample& obj)
{
a = obj.a;
return *this;
}
int a;
};
کلاس Sample دارای یک تابع سازنده ، یک تابع سربارگذاری برای عملگر = و یک داده ی عضو از نوع int است. تابع سربارگذاری بالا، عضو داده ای شی obj را به درون شیئی که این تابع را فراخوانی کرده، کپی می کند. با تعریف تابع به صورت بالا اشیائ کلاس میتوانند در یک جایگزینی زنجیره ای ( برای مثال obj3 = obj2 = obj ) شرکت کنند.
دقت داشته باشید که "جایگزینی" را با "مقدار دهی" اشتباه نکنید. درست است که هر دو از عملگر = استفاده میکنند ولی در "جایگزینی"، عملگر جایگزینی و در "مقدار دهی"، سازنده ی کپی فراخوانی می شود. در زیر یک مثال برای هر کدام آورده شده است.
// initialization
Sample obj2 = obj1;
// assignment
obj2 = obj1;
+ نوشته شده در یکشنبه بیست و پنجم تیر ۱۳۹۱ ساعت 17:16 توسط MEC
GENERAL INFORMATION