با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش ++C در خدمت شما دوستان هستیم . در بخش قبلی با ساختمان ها در ++C آشنا شدید، در این جلسه قصد داریم به آموزش سربارگذاری عملگر ها در ++C یا Overloading در ++c بپردازیم.
کارکرد عملگر ها برای انواع داده پایه مانند int, string, double و … همیشه یکسان خواهد بود.
با این حال برای انواع داده تعریف شده توسط کاربر مانند اشیا باید عملگر ها را سربارگذاری کرد.(Operator Overloading)
برای مثال اگر دو شی از یک کلاس که شمال یک عضو داده رشته (String) داشته باشید، می توانید با استفاده از سربارگذاری عملگر + این دو رشته را به هم الحاق کنید.
بدون استفاده از سربارگذاری عملگر ها می توانید هر برنامه ای را در ++C بنوسید.
با این حال این کار به طور گسترده برای پویا و مشهود کردن برنامه توسط برنامه نویسان استفاده می شود.
کد زیر را در نظر بگیرید:
1 | calculation = add(multiply(a, b),divide(a, b)); |
می توانید آن را به کد زیر تبدیل کنید(با استفاده از سربارگذاری عملگر ها):
1 | calculation = (a*b)+(a/b); |
برای سربارگذاری یک عملگر، یک تابع عملگر ویژه در داخل کلاس تعریف می کنیم:
1 2 3 4 5 6 7 8 9 10 | class className { ... .. ... public returnType operator symbol (arguments) { ... .. ... } ... .. ... }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #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; } |
خروجی:
1 | 6 |
هنگامی که عملگر ++ بر روی شی کلاس test استفاده شود، تابع سربارگذاری اجرا می شود.
جلسه سربارگذاری عملگر ها در ++C نیز به پایان رسید.
در جلسه بعد به آموزش وراثت در ++C خواهیم پرداخت. با ما همراه باشید
فاطمه
چرا عمگر ها رو مجددا تعریف میکنیم ؟؟؟
صادق
با عرض سلام و پوزش از تاخیر در پاسخگویی.
در حالت عادی عملگر ها بر روی انواع داده اولیه مثل integer, string, float و … کار میکنند.
ولی اگر بخوایم بر روی اشیایی که ما ساختیم عملگر ها کار کنند، باید اون ها رو سربارگذاری کنیم.
برای مثال دو تا شی به نام های o1 و o2 از یک نوع کلاس داریم که حاوی یک خاصیت به نام value هستند.
در حالت عادی عبارت زیر نامفهمومه:
className o3 = o1 + o2;
چون کامپایلر نمیدونه که در عبارت بالا دقیقا چی رو باید جمع کنه.
حالا ما با استفاده از سربارگذاری عملگر ها می آییم اینو روشن می کنیم. بعد از سربارگذاری کلاس نام برده شده، عبارت بالا خاصیت value اشیا o1 و o2 رو جمع می کنه و میریزه تو خاصیت value شی o3.