۱۲ مطلب با کلمه‌ی کلیدی «عمل گر ها» ثبت شده است

سربارگذاری عمل گر ها (operator overloading) - قسمت سوم

سلام!

این جلسه می خواهیم عمل گر های ++ و -- را هم به صورت پیشوندی (prefix) و هم به صورت پسوندی (postfix) سربارگذاری کنیم.

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

#include <iostream>

using namespace std;

int main(){
    int a = 0;
    cout << a++ << endl;
    return 0;
}

#include <iostream>

using namespace std;

int main(){
    int a = 0;
    cout << ++a << endl;
    return 0;
}

متوجه می شوید که اگر عمل گر ++ به صورت پیشوندی ظاهر شود، مقدار اضافه شده را برمی گرداند و اگر به صورت پسوندی استفاده شود، مقدار قبلی متغیر را برمی گرداند. این توضیح برای عمل گر -- هم صدق می کند.

۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

پاسخ تمرین سری قبل

سلام!

پاسخ تمرین جلسه ی قبل را می توانید در این کد ببینید.

۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

سربارگذاری عمل گر ها (operator overloading) - قسمت دوم

سلام!

در جلسه های قبلی شما کمی با چگونگی بازتعریف عمل گر ها آشنا شدید. حالا این جلسه می خواهیم با کمک متغیرهای مرجع (که با آن ها در جلسه ی پیش آشنا شدید) عمل گر های بیشتری را تغییر دهیم.

فرض کنید می خواهیم عمل گر += را پیاده سازی کنیم. برای این کار باید از متغیرهای مرجع استفاده کنیم. می توانید کد مربوط به آن را در کد زیر ببینید.

۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

پاسخ تمرین های سری قبل

سلام!

پاسخ تمرین سری قبل را می توانید در این جا مشاهده نمایید.

۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

سربارگذاری عمل گر ها (operator overloading)

سلام!

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

فرض کنید یک class به نام Point نوشته اید که شامل دو مؤلّفه (x و y) است. این کار را جلسه ی پیش انجام دادید. اگر انجام ندادید می توانید از کد زیر استفاده کنید.

#include <iostream>
#include <cstdio>

using namespace std;

class Point{
    
    friend void set(Point*, int = 0, int = 0);

    private:

        int _x, _y;
        
        void setX(int);
        void setY(int);
    
    public:

        Point(int = 0, int = 0);

        int x() const;
        int y() const;

};

Point::Point(int x, int y){
    set(this, x, y);
}

void Point::setX(int x){
    this->_x = x;
}

void Point::setY(int y){
    this->_y = y;
}

int Point::x() const{
    return this->_x;
}

int Point::y() const{
    return this->_y;
}

void set(Point *point, int x, int y){
    point->setX(x);
    point->setY(y);
}

int main(){
    int x, y;
    scanf("%d %d", &x, &y);
    Point point(x, y);
    printf("X: %d\nY: %d\n", point.x(), point.y());
    return 0;
}

۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی