اینجا میتونی برنامه نویسی ویندوز رو به طور کاملا رایگان یاد بگیری
2 سال پیش / خواندن دقیقه

آموزش سربارگذاری عملگرها در C++ (به زبان کاملا ساده) | آموزش سی پلاس پلاس

آموزش سربارگذاری عملگرها در C++ (به زبان کاملا ساده) | آموزش سی پلاس پلاس

در C++، امکان تغییر عملکرد عملگرها (برای انواع تعریف شده توسط کاربر) امکان پذیر است. در این آموزش، با پیاده سازی ویژگی های سربارگذاری عملگرها آشنا می شوید.

معنای عملگر همیشه برای انواع متغیرهای اساسی مثل int، float، double و غیره یکسان است. برای مثال: برای اضافه کردن دو عدد صحیح، عملگر + استفاده می شود.

با این حال، برای انواع تعریف شده توسط کاربر (مانند: اشیاء)، می توان عملگرها را به نحوی مجدد تعریف کنید. مثلا:


اگر دو شی از یک کلاس وجود داشته باشد که شامل متغیری از نوع string است، می توان عملگر + را دوباره تعریف و از آن برای ترکیب رشته ها استفاده کرد.

این ویژگی در برنامه نویسی C++ که برنامه نویس را قادر می سازد تعریف مجدد عملگر را انجام دهد، (برای اشیا کلاس) به عنوان سربارگذاری عملگر شناخته می شود.

چرا تعریف مجدد عملگر استفاده می شود؟

می توان هر برنامه C++ را بدون دانستن و پیاده سازی مجدد عملگرها نوشت. با این حال، سربارگذاری عملگر توسط برنامه نویسان، برای ایجاد یک برنامه قابل درک استفاده می شود. مثلا

می توانید کد را اینطور جایگزین کنید:

calculation = add(multiply(a, b),divide(a, b));

به

calculation = (a*b)+(a/b);

چگونه عملگرها را در C++ تعریف مجدد کنیم؟

برای تعریف مجدد عمگر، یک تابع عملگر خاص در داخل کلاس تعریف می شود:

class className
{
… .. …
public
returnType operator symbol (arguments)
{
… .. …
}
… .. …
};

در اینجا، returnType نوع بازگشتی تابع است.

symbol نماد عملگریست که می خواهید آن را مجددا تعریف کنید. مانند: +، <، -، ++

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

مثال: سربارگذاری عملگر در برنامه نویسی C++

#include <iostream>
using namespace std;
class Test
{
private:
int count;
public:
Test(): count(5){}
void operator ++()
{
count = count+1;
}
void Display() { cout<<“Count: “<<count; }
};
int main()
{
Test t;
// this calls “function void operator ++()” function
++t;
t.Display();
return 0;
}

خروجی

Count: 6

این تابع هنگامی که عملگر ++ بخواهد بر روی شیء کلاس

Test (object t در این مورد)

عمل کند، صدا زده می شود.

در برنامه، تابع عملگر

void operator ++()

در کلاس Test تعریف شده است.

این تابع مقدار count را برای شیء t یک واحد افزایش می دهد.

نکات مهم

۱- سربارگذاری عملگر اجازه می دهد تا مجددا عملگر را تعریف کنید که فقط برای انواع تعریف شده توسط کاربر (اشیا، ساختارها) کار می کند. نمی تواند برای انواع int، float، char و غیره استفاده شود.

۲- دو اپراتور = و & فعلا در C++ به طور پیش فرض تعریف مجدد شده اند.. به عنوان مثال: برای کپی اشیاء از کلاس مشابه، می توانید مستقیما از عملگر = استفاده کنید. نیازی به ایجاد تابع عملگر ندارید.

۳- سربارگذاری عملگرها نمی تواند اولویت و وابستگی آن ها را تغییر دهد. با این حال، اگر می خواهید به آن ها اولویت دهید، باید از پرانتز استفاده کنید.

۴- چهار عملگر در C++ وجود دارد که نمیتوان آن ها را تعریف مجدد کرد. :: (تشخیص حوزه)، . (انتخاب عضو)، * (انتخاب عضو از طریق اشاره گر به تابع) و 😕 (عملگر سه جانبه).

بهترین روش ها را هنگام استفاده از سربارگذاری عملگر دنبال کنید

همانطور که خواندید تعریف مجدد عملگر، اجازه می دهد تا نحوه کار آن را دوباره مشخص کنید.

در مثال بالا، عملگر ++ بر روی شیء عمل می کند تا مقدار count را یک واحد افزایش دهد.

void operator ++()

{

count = count+1;

}

با این حال، اگر از کد زیر استفاده می کنید، هنگامی که عملگر ++ استفاده می شود، مقدار count 100 کاهش می یابد.

void operator ++()

{

count = count-100;

}

کد بالا از لحاظ فنی درست اما گیج کننده و درک آن دشوار است.

شغل شما به عنوان یک برنامه نویس، استفاده به موقع و درست از سربارگذاری عملگرهاست.

در مثال بالا، وقتی عملگر ++ استفاده می شود، مقدار count یک واحد افزایش می یابد. با این حال، این برنامه ناقص است زیرا نمی توانید از کد زیر استفاده کنید چون که نوع بازگشتی از تابع عملگر، void است.

t1 = ++t

 


شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع