رفتن به مطلب
برنامه نویسی من
Mostafa

آموزش Overloading عملگر و تابع در ++C

پست های پیشنهاد شده

++C به شما اجازه می‌دهد تا در یک دامنه مشخص، بیش از یک تعریف برای یک تابع یا یک عملگر مشخص کنید، که به ترتیب اضافه بار تابع (function overloading) و اضافه بار عملگر (operator oveloading) نامیده می‌شود.

یک اعلان اورلود شده، اعلانی است که  دارای نام و دامنه یکسانی با یک اعلان پیشین است، با این تفاوت که آرگومان‌های متفاوت و طبیعتاً تعریف متفاوتی از اعلان قبلی خواهد داشت.

هنگام تعریف یک تابع یا عملگر اورلود شده، کامپایلر نوع آرگومان‌هایی که در فراخوانی تابع یا عملگر استفاده کرده‌اید را با نوع پارامترهای تعیین شده در تعریف مقایسه کرده و مناسب‌ترین تعریف را انتخاب می‌کند. فرآیند انتخاب مناسب‌ترین تابع یا عملگر اورلود شده overload resolution خوانده می‌شود.

اورلود تابع در ++C

می‌توان برای یک نام تابع در یک دامنه مشخص، چندین تعریف ارائه کرد. تعاریف تابع باید از حیث نوع/تعداد آرگومان‌ها متفاوت باشند. نمی‌توان تابع اورلود شده‌ای اعلان کرد که تنها از لحاظ نوع داده برگشتی متفاوت باشد.

مثال زیر تابع ()print را برای چاپ نوع داده‌های متفاوت به کار می‌برد.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

با اجرای برنامه فوق، خروجی زیر تولید می‌شود.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

اورلود عملگرها در ++C

می‌توان عملگرهای درونی ++C را نیز اورلود یا بازتعریف کرد. بنابراین، یک برنامه‌نویس می‌تواند عملگرها را برای نوع داده‌های تعریف شده توسط کاربر نیز به کار گیرد.

عملگرهای اورلود شده توابعی با نام ویژه هستند: کلیدواژه «operator» و به دنبال آن علامت عملگر تعریف شونده.

مانند هر تابع دیگری، عملگر اورلودشده یک نوع داده بازگشتی و یک لیست پارامتر دارد.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

عبارت فوق عملگر جمع را برای اضافه کردن دو شی Box و بازگرداندن Box حاصله به کار می‌گیرد. اکثر عملگرهای اورلود شده را می‌توان به عنوان توابع غیرعضو معمولی و یا توابع عضو کلاس تعریف کرد. در حالتی که این توابع را به عنوان توابع غیرعضو یک کلاس تعریف کنیم، مجبور خواهیم بود که برای هر عملوند، دو آرگومان به صورت زیر  ارسال کنیم.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

مثال زیر مفهوم اورلود عملگر را با استفاده از یک تابع عضو نشان می‌دهد. در اینجا یک شی به صورت آرگومان به تابع ارسال می‌شود و خصوصیات آن از طریق نام آرگومان قابل دسترسی هستند، اما برای دسترسی به خصوصیات شی که عملگر را فراخوانی می‌کند از کلیدواژه this استفاده می‌شود.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

با اجرای این کد، خروجی زیر حاصل می‌گردد.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

عملگرهایی با قابلیت اورلود و عملگرهایی بدون قابلیت اورلود

در زیر لیست عملگرهایی که قابلیت اورلود دارند آمده است.

+

* / % ^

&

| ~ ! ,

=

>

< <= >= ++

>> << == !=

&&

||

=+

-= /= %= ^=

&=

|=

*= <<= >>=

[]

()

-> ->* new new [] delete

delete []

و در زیر نیز لیست عملگرهایی که قابلیت اورلود ندارند گردآوری شده است.

::

.* .

?:

مثال‌هایی از اورلود عملگرها

در زیر مثال‌های متنوعی آمده که به فهم بهتر مفهوم کمک می‌کند.

ردیف

عملگرها و مثال‌ها

1

اورلود عملگرهای یگانی

2

اورلود عملگرهای باینری

3

اورلود عملگرهای رابطه‌ای

4

اورلود عملگرهای ورودی/خروجی

5

اورلود عملگرهای ++  و – –

6

اورلود عملگرهای تخصیص

7

اورلود عملگر فراخوانی تابع ()

8

اورلود عملگر []Subscripting 

9

-> اورلود عملگر دسترسی عضو

 

 

 

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

×
×
  • اضافه کردن...