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

سلام!

جواب تمرین قبلی را می توانید در کد زیر مشاهده کنید.

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

سربارگذاری عمل گر ها (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) - قسمت دوم

سلام!

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

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

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

متغیرهای مرجع (reference)

سلام!

این جلسه (همان طور که از اسمش پیداست) قرار است به متغیرهای مرجع بپردازیم. سپس در جلسه ی بعد این مطلب را به مطلب جلسه ی قبل (سربارگذاری عمل گر ها) ارتباط می دهیم.

فرض کنید یک تابع نوشته اید که یک متغیر را به عنوان ورودی می گیرد و سپس مقدار آن را دو برابر می کند. کد آن چیزی شبیه کد زیر است؛

#include <iostream>

using namespace std;

void f( int *a){
    *a *= 2;
}

int main(){
    int a = 5;
    f( &a );
    cout << a << endl;
}

حالا می خواهیم از متغیرهای مرجع استفاده کنیم. کد زیر را در نظر بگیرید:

int &b = a;
۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

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

سلام!

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

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

سربارگذاری عمل گر ها (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;
}

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