گرانبار کردن توابع (استفاده از يک نام برای چند تابع)

   ++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 با پيش تعريف :

int square (int) ;

فراخوانی می شود و هنگامی که دستور :

double doubleResult = square (7.5) ;

اجرا می گردد تابع square با پيش تعريف :

double square (double );

فراخوانی می شود .

   نکته : توجه داشته باشيد که توابع گرانبار شده الزامی ندارند که وظيفه يکسانی را انجام دهند . و ممکن است کاملاً با هم تفاوت داشته باشند ، ولی توصيه می شود که توابعی را گرانبار کنيد که يک کار را انجام می دهند .


 

 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 
 

حق کپی رایت محفوظ می باشد