سربارگذاری متدها

سربارگذاری متدها (Method Overloading) به شما اجازه می دهد که دو متد با نام یکسان تعریف کنید که دارای امضا و تعداد پارامترهای مختلف هستند.برنامه از روی آرگومانهایی که شما به متد ارسال می کنید به صورت خودکار تشخیص می دهد که کدام متد را فراخوانی کرده اید یا کدام متد مد نظر شماست. امضای یک متد نشان دهنده ترتیب و نوع پارامترهای آن است. به مثال زیر توجه کنید :

void MyMethod(int x, double y, string z)

که امضای متد بالا

MyMethod(int, double, string)

به این نکته توجه کنید که نوع برگشتی و نام پارامترها شامل امضای متد نمی شوند. در مثال زیر نمونه ای از سربارگذاری متد ها آمده است.

  1: #include <iostream>
  2: using namespace std;
  3: 
  4: void ShowMessage(double number)
  5: {
  6:     cout << "Double version of the method was called." << endl;
  7: }
  8: 
  9: void ShowMessage(int number)
 10: {
 11:     cout << "Integer version of the method was called." << endl;
 12: }
 13: 
 14: int main()
 15: {
 16:     ShowMessage(9.99);
 17:     ShowMessage(9);
 18: }
Double version of the method was called.
Integer version of the method was called.

در برنامه بالا دو متد با نام مشابه تعریف شده اند. اگر سربارگذاری متد توسط ++C پشتیبانی نمی شد برنامه زمان زیادی برای انتخاب یک متد از بین متدهایی که فراخوانی می شوند لازم داشت. رازی در نوع پارامترهای متد نهفته است. کامپایلر بین دو یا چند متد همنام در صورتی فرق می گذارد که پارامترهای متفاوتی داشته باشند. وقتی یک متد را فراخوانی می کنیم ، متد نوع آرگومانها را تشخیص می دهد.
در فراخوانی اول (خط 16) ما یک مقدار double را به متد ()ShowMessage ارسال کرده ایم در نتیجه متد ()ShowMessage (خطوط 7-4) که دارای پارامتری از نوع double اجرا می شود. در بار دوم که متد فراخوانی می شود (خط 17) ما یک مقدار int را به متد ()ShowMessage ارسال می کنیم متد ()ShowMessage (خطوط 12-9) که دارای پارامتری از نوع int است اجرا می شود. معنای اصلی سربارگذاری متد همین است که توضیح داده شد. هدف اصلی از سربارگذاری متدها این است که بتوان چندین متد که وظیفه یکسانی انجام می دهند را تعریف کرد.