در این قسمت تیم کدگیت را با آموزش Function Overloading در سی پلاس پلاس همراهی کنید. این آموزش را با معرفی انواع Function OverLoading شروع کرده و در ادامه با توضیح هرکدام، مثالی را پیاده سازی میکنیم. پیش نیاز این آموزش شامل موارد زیر است:
Function Overloading در سی پلاس پلاس
اگر چندین تابع را با یک نام بنویسیم آنرا overloading میگویند(در یک کلاس). معمولا وقتی یک قسمت از کد کار خاصی را انجام میدهد میتوان با نامگذای یکسان توابع، خوانایی کد را بالا برد.
فرض کنید میخواهید کدی بنویسید که عملیات جمع را انجام دهد. تابعی مینویسیم به صورت (int,int).حال برای اینکه سه عدد را با هم جمع کنیم تابعی باید بنویسیم به صورت (int,int,int). این دو تابع یک کار را انجام میدهند و اگر یک نام داشته باشند کد بسیار خواناتر است و به راحتی میتوان کد را متوجه شد. انواع Function Overloading در سی پلاس پلاس به صورت زیر است:
- تفاوت توابع در نوع ورودی (مثلا int با float)
- تفاوت توابع در تعداد ورودی (مثلا int با int,int)
- تفاوت توابع در دنباله ورودیها (مثلا int,int,int با int,float,int)
تفاوت توابع در نوع ورودی
با یک مثال ساده این نوع overloading را نشان میدهیم. ما میخواهیم تابعی برای عملیات جمع دو عدد بنویسیم. نام تابع را sum میگذاریم. ابتدا تابع را با دو ورودی int مینویسیم سپس یک تابع دیگر با همین نام و تعداد ورودی ولی از نوع double مینویسیم. کد آن به صورت زیر است:
// function with 2 int parameter
void Sum(int x, int y) {
cout << "Sum (int x,int y) is " << x + y << endl;
}
// function with same name but 2 double parameter
void Sum(double x, double y) {
cout << "Sum (Double x, Double y) is " << x + y << endl;
}
تفاوت توابع در تعداد ورودی
با همان مثال عملیات جمع این نوع overloading را توضیح میدهیم. ابتدا یک تابع به صورت (int,int) مینویسیم سپس تابع دوم را برای عملیات جمع سه عدد مینویسیم پس به صورت (int,int,int) است.کد overloading در سی پلاس پلاس به صورت زیر است:
// function with 2 int parameter
void Sum(int x, int y) {
cout << "Sum (int x,int y) is " << x + y << endl;
}
// function with same name and 3 int parameters
void Sum(int x, int y, int z) {
cout << "Sum (int x, int y, int z) is " << x + y + z << endl;
}
تفاوت توابع در دنباله ورودی
قبل از توضیح مثال این نوع overloading باید ذکر کنیم بعضی منابع این نوع overloading را عضو دسته اول(تفاوت در نوع ورودی) میگیرند. ما برای اینکه تمام حالات را پوشش دهیم این قسمت را نیز جداگانه توضیح دادیم. برای مثال این قسمت دوباره از عملیات جمع استفاده میکنیم فقط ورودی ها به صورت (int,double) و (double,int) است. کد overloading در سی پلاس پلاس به صورت زیر است:
// function with 2 int parameter
void Sum(double x, int y) {
cout << "Sum (double x,int y) is " << x + y << endl;
}
// function with 2 int parameter
void Sum(int x, double y) {
cout << "Sum (int x,double y) is " << x + y << endl;
}