19-04-2015, 14:23
|
|
|
חבר מתאריך: 07.10.08
הודעות: 193
|
|
בקשר להעמסת אופרטורים CPP
הבנתי את רוב הנושא אבל יש כמה דברים שלא יושבים לי היטב ואשמח לעזרה
הדוגמא שעבדנו עליה זה מחלקה של המספר הרציונאלים(מכילה שדה "מונה" ושדה "מכנה")
אני יודע לעשות העמסה של +/גדול /כפול/שונה/++/--
יש לי בעיה עם COUT ועם =
הרי ידוע שאם a,b הם מופעים של המחלקה ניתן לעשות a=b ואז כל השדות יועתקו
ראינו את המימוש הבא
קוד PHP:
const Rational& Rational::operator=(const Rational& num)
{
this->mone = num.mone;
this->mechane = num.mechane;
return *this;
}
הבנתי שזה נועד שאוכל לעשות a=b=c=d וכו'
לא הבנתי את המימוש הנ"ל
את החלק
קוד PHP:
Rational::operator=(const Rational& num)
הבנתי כמובן, זה מימוש של = שמשייך למחלקה Rational ושמקבל num מסוג Rational (יש עליו & כך שכל שינוי שנעשה עליו ישתנה גם בתוכנית) וישמור עליו עם קבוע כדי שלא נשנה אותו בטעות בפונקציה
אגב, למה יש את ה & אם יש את ה CONST , הרי גם ככה לא ניתן לשנות אותו?
האם כדי לחסוך את הבנאי?
והחלק שאני באמת לא מבין... מה זה const Rational&
מה זה אומר שהיא מחזירה התייחסות ל Rational ושזה קבוע... לא הבנתי
כמו כן מימוש של COUT
בהצרה כתבנו
קוד PHP:
friend ostream& operator<<(ostream&, Rational);
ובמימוש
קוד PHP:
ostream& operator<<(ostream& out, Rational num)
{
out << num.mone << '/' << num.mechane << endl;
return out;
}
אני יודע מה זה מחלקה חברה(מחלקה שיש לה גישה למשתנים פרטיים של מחלקה אחרת בCPP יש את זה כמובן)
לא הבנתי כ"כ את ההצהרה והמימוש, אשמח להסבר
מה זה אומר שהיא מחזירה ostream&
והיא מקבלת ostream& out
מה זה בידיוק ה OUT הזה ואיך הוא משמש בפונקציה ככה
קוד PHP:
out << num.mone << '/' << num.mechane << endl;
אשמח להסבר חברים
תודה רבה!!
|