Object Oriented in Cpp, آموزش ++c, زبان c++, َشی گرایی در سی پلاس پلاس

Operator OverLoading در سی پلاس پلاس

Operator OverLoading در سی پلاس پلاس

در این قسمت تیم کدگیت را با آموزش Operator OverLoading در سی پلاس پلاس همراهی کنید. ابتدای آموزش در مورد Operator OverLoading صحبت می‌کنیم سپس مثالی واقعی از توضیحات که داده شده را پیاده سازی می‌کنیم. پیش نیاز این آموزش شامل موارد زیر است:

  1. شی گرایی در سی پلاس پلاس
  2. ارث بری در سی پلاس پلاس
  3. توابع در سی پلاس پلاس
  4. Constructor در سی پلاس پلاس

Operator OverLoading در سی پلاس پلاس

در سی پلاس پلاس می‌توان Operator ها را برای کلاسهایی که برنامه نویس آنها را پیاده سازی کرده، OverLoad کرد. این بدین معنی است که مانند کلاس String، اگر از operator جمع استفاده شود دو رشته الحاق می‌شود، می‌توانیم برای کلاس‌هایی که خودمان می‌نویسیم یک Operator تعریف کرده و عملیات دلخواه خودمان را در آن اجرا کنیم. برای اینکه یک Operator را Overload کنیم از روش زیر استفاده می‌کنیم:

Class_name operator+(const Classname&);

برای درک بهتر این مطلب یک مثال ساده می‌زنیم:

مثال Operator OverLoading در سی پلاس پلاس

در ریاضیات اعدادی وجود دارد به نام اعداد مختلط. تعریف دقیق این اعداد به صورت زیر است:

عدد مختلط یا عدد همتافت عددی به شکل a + ib, است که  a و  b اعداد حقیقی‌اند و  i یکه موهومی با خصوصیت i^2 = -1 است. عدد a قسمت حقیقی و عدد b قسمت موهومی نامیده می‌شود.

از اعداد مختلط برای پیاده سازی Operator OverLoading استفاده می‌کنیم. ما در پیاده سازی خود یک کلاس برای نمایش اعداد مختلط می‌نویسیم و با استفاده از Operator OverLoading در سی پلاس پلاس، عمل جمع دو عدد مختلط را انجام می‌دهیم. کد این مثال به صورت زیر می‌باشد:

class Complex {
private:
    int real, imag;
public:
    Complex(int r = 0, int i = 0) {
        real = r;
        imag = i;
    }

    // This is automatically called when '+' is used with
    // between two Complex objects
    Complex operator +(Complex const &obj) {
        Complex res;
        res.real = real + obj.real;
        res.imag = imag + obj.imag;
        return res;
    }
    void print() {
        cout << real << " + i" << imag << endl;
    }
};

int main() {
    Complex c1(10, 5), c2(2, 4);
    Complex c3 = c1 + c2; // An example call to "operator+"
    c3.print();
}

در کد بالا یک کلاس به نام Complex نوشتیم که نشان دهنده اعداد مختلط است. یک تابع نیز به نام +opearate نوشتیم که کار Operate Overloading را انجام می‌دهد. این تابع یک ورودی از جنس Complex دریافت می‌کند و جمع خود شی و ورودی را برمی‌گرداند. تابع print نیز برای نمایش عدد مختلط است.

در Main برنامه دو شی C1 و C2 نوشتیم. سپس با استفاده از Operator OverLoading شی C3 را ساختیم. شی C3 حاصلجمع دو شی c1 و c2 است.

نوشته های مشابه

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

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