![ישן](https://static.fresh.co.il/images/vBulletin/statusicon/post_old.gif)
20-09-2010, 20:53
|
![צלמית המשתמש של פסטן](image.php?u=153560&dateline=1392759932) |
|
|
חבר מתאריך: 14.12.09
הודעות: 9,751
|
|
מסיבה פשוטה מאוד: ה-const השני בהגדרה של הפונקציה (המודגש למטה) אומר שניתן
לקרוא לפונקציה הזו רק על אובייקטים שהם const-ים. אני מנחש שניסית לעשות משהו כזה:
A a;
a(1,2)=5;
int i = a(1,2); // boo!
אולי ציפית שהקריאה השנייה (המסומנת ב-boo) תקרא לגרסת ה-const של האופרטור,
אבל האופרטור השני שלך הוא לא רק כזה שמחזיר const (בעצם החזרת immutable
למרות שמדובר ב-reference), אלא גם כזו שפועלת רק על אובייקטים שהם קבועים. אבל
המשתנה a למעלה הוא משתנה רגיל ולא קבוע.
קוד:
int& A::operator()(const int &y, const int &x){
return _data[y][x];
}
const int& A::operator()(const int &y, const int &x) const{
return _data[y][x];
}
|