۱۹ مطلب در بهمن ۱۳۹۳ ثبت شده است

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

سلام!

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

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

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

سلام!

این جلسه قرار است تمامی عمل گر هایی را که تا کنون طرز سربارگذاری آن ها را یاد گرفتیم، در خود class تعریف کنیم نه در بیرون آن. این نوع تعریف درست تر هم به نظر می آید چون عمل گر ها خود عضوی از class هستند پس باید درون آن تعریف شوند.

وقتی که یک عمل گر را درون بدنه ی class تغییر می دهید، ورودی اوّل آن به صورت پیش فرض یک object از نوع همان class است که درون آن هستیم. مثلا فرض کنید می خواهید عمل گر += را برای Point (که کد آن را طی جلسات پیش تا جای خوبی پیش بردیم) تغییر دهید. برای انجام این کار در درون کلاس باید بنویسید

void operator+=(const Point&);
۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

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

سلام!

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

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

سربارگذاری عمل گر ها (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;
۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی