20-09-2010, 20:53
|
|
|
|
חבר מתאריך: 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];
}
|