|
گرانبار کردن توابع (استفاده
از يک نام برای چند تابع) |
++C
استفاده از يک نام را برای چند تابع ، هنگامی
که توابع از نظر نوع آرگومان ها ، تعداد آرگومان ها يا ترتيب قرار
گرفتن نوع آرگومان ها با هم متفاوت باشند را امکان پذير کرده است
اين قابليت ، گرانبار کردن توابع ناميده می شود . هنگامی که يک
تابع گرانبار شده فراخوانی می شود کامپايلر با مقايسه نوع ، تعداد
و ترتيب آرگومان ها تابع درست را انتخاب می کند . معمولاً از توابع
گرانبار شده برای ايجاد چند تابع با نامهای يکسان که کار يکسانی را
بر روی انواع داده ای متفاوتی انجام می دهند استفاده می شود . به
عنوان مثال اکثر توابع رياضی زبان ++C
برای انواع داده ای متفاوت گرانبار شده اند .
گرانبار کردن توابعی که کار يکسانی را انجام می دهند برنامه را
قابل فهم تر و خواناتر می سازد . برنامه زير نحوه به کار گيری
توابع گرانبار شده را نشان می دهد .
#include <iostream.h>
int square( int );
double square( double );
void main()
{
// calls int version
int intResult = square( 7 );
// calls double version
double doubleResult = square( 7.5 );
cout << "\nThe square of integer 7 is "
<< intResult
<< "\nThe square of double 7.5 is "
<< doubleResult
<< endl;
} // end main
// function square for int values
int square( int x )
{
cout <<"Called square with int argument: "
<< x << endl;
return x * x;
} // end int version of function square
// function square for double values
double square( double y )
{
cout <<"Called square with double argument: "
<< y << endl;
return y * y;
} // end double version of function square
خروجی برنامه به صورت زير می باشد .
Called square with int argument: 7
Called square with double argument: 7.5
The square of integer 7 is 49
The square of double 7.5 is 56.25
برنامه فوق برای محاسبه مربع يک عدد صحيح (int)
و يک عدد اعشاری (double)
از تابع گرانبارشده
square
استفاده می کند .هنگامی که دستور:
int intResult = square (7) ;
اجرا می گردد تابع
square
با پيش تعريف :
فراخوانی می شود و هنگامی که دستور :
double doubleResult = square (7.5) ;
اجرا می گردد تابع
square
با پيش تعريف :
فراخوانی می شود .
نکته :
توجه داشته باشيد که توابع گرانبار شده الزامی ندارند که وظيفه
يکسانی را انجام دهند . و ممکن است کاملاً با هم تفاوت داشته باشند
، ولی توصيه می شود که توابعی را گرانبار کنيد که يک کار را انجام
می دهند .
|