سربارگذاری تابع Function Overloading

سربارگذاری تابع یا Function Overloading چیست؟

منظور از سربارگذاری تابع در برنامه نویسی، ایجاد نسخه‌های مختلفی از یک تابع با نام یکسان است که قادر به انجام کارهای تقریبا مشابهی هستند. در واقع تابع سربارگذاری شده دارای چندین پیاده سازی است که بسته به نیازهای مختلف برنامه، هر پیاده سازی دستورات متفاوتی را اجرا می‌کند.

برای مثال یک تابع فرضی به نام Multiply را درنظر بگیرید. نسخه‌ای از این تابع دارای یک پارامتر است که عددی صحیح را دریافت می‌کند. در این نسخه، عدد دریافتی در عدد 2 ضرب شده و حاصل به عنوان خروجی برگردانده می‌شود. پیاده سازی دیگری از تابع Multiply دارای دو پارامتر از نوع عدد صحیح (integer) است که عدد اول را به عنوان عملوند اول و عدد دوم را به عنوان عملوند دوم ضرب در نظر می‌گیرد. هنگام فراخوانی این تابع، در صورتی که تنها یک پارامتر تعیین شود کامپایلر (مفسر) متوجه می‌شود که باید از نسخه‌ی اول استفاده کند و در صورتی که دو پارامتر وارد شود از نسخه‌ی دوم استفاده خواهد شد.

برنامه‌ی زیر به زبان C++ نحوه‌ی پیاده سازی‌های فوق را نمایش می‌دهد. دقت کنید اولین فراخوانی این تابع در main مقدار 200 (حاصل ضرب 100 در عدد 2) را برمی‌گرداند و فراخوانی دوم، مقدار 400 (حاصل ضرب 100 در عدد 4) را برمی‌گرداند.

#include <iostream>
using namespace std;
int Multiply(int a)
{
    return a*2;
}

int Multiply(int a, int b)
{
    return a*b;
}

int main()
{
    cout << Multiply(100);
    cout << Multiply(100, 4);
}

برای اینکه هنگام فراخوانی مشخص شود باید از کدام نسخه‌ی تابع سربارگذاری شده استفاده شود لازم است نوع یا تعداد پارامترهای تابع در پیاده سازی‌های مختلف متفاوت باشد. به عنوان مثال نمی‌توان تابع Power فوق را به شکلی ایجاد نمود که در هر دو نسخه یک پارامتر، آن هم از نوع integer دریافت کند. دقت داشته باشید در تعداد نسخه‌های overload شده‌ی تابع هیچ محدودیتی وجود ندارد اما قانون فوق باید رعایت شود.

یکی از کاربردهای رایج سربارگذاری تابع در مورد توابع سازنده (Constructor) کلاس‌ها دیده می‌شود. معمولا نسخه‌ای از تابع سازنده بدون پارامتر تعریف می‌شود و مقادیر متغیرهای عضو کلاس را با یک مقدار پیش فرض (مثل صفر) مقداردهی می‌کند. نسخه‌ای دیگر نیز مقادیر مورد نظر کاربر را از طریق پارامترهایی دریافت می‌کند و به متغیرها تخصیص می‌دهد.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

واژه‌های مرتبط

حلقه For یا For Loop حلقه For یا For Loop چیست؟ حلقه For در زبان‌های برنامه نویسی، یک دستور کنترلی است که برای ایجاد یک حلقه تکرار شونده مورد استفاده قرار می‌گیرد. به عبا...
خروج به ترتیب ورود First In, First Out – FIF... خروج به ترتیب ورود یا First In, First Out - FIFO چیست؟ خروج به ترتیب ورود (First In, First Out) یا به اختصار FIFO روشی برای سازماندهی و کنترل بافرهای...
فرمت فایل File Format فرمت فایل یا File Format چیست؟ فرمت فایل (File Format) یا قالب فایل، استانداردی است که نحوه کدگذاری و سازماندهی اطلاعات در یک فایل رایانه‌ای را مشخص ...
فلوچارت Flowchart فلوچارت یا Flowchart چیست؟ فلوچارت (Flowchart) یا روندنما نوعی دیاگرام است که برای نمایش ترتیب و نحوه‌ی عملکرد گام‌های مختلف یک الگوریتم یا فرایند به...
فرم ویر Firmware فرم ویر یا Firmware چیست؟ فرم ویر یا سفت افزار (Firmware) به نوعی از نرم‌افزارها گفته می‌شود که امکان کنترل، بررسی و اعمال تغییرات در یک محصول را فرا...
آرایه انجمنی Associative array آرایه انجمنی یا Associative array چیست؟ آرایه انجمنی (Associative array) در زبان‌های برنامه‌نویسی یک نوع داده‌ی انتزاعی است متشکل از مجموعه‌ای از دوت...

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *