כבר שנים לא כתבתי ב-C++, אבל נתקלתי היום בנושא הזה ואני מנסה להבין.
מה בדיוק מותר ומה אסור לעשות כשמעבירים const reference?
לדוגמה - יש לי מחלקה Foo, ובמקום אחר פונקציה המוגדרת:
קוד: |
void bar (const Foo &f) {}
|
מובן שאסור לי בתוך הפונקציה bar להציב ערך חדש למשתנה f (דבר שישנה את המצביע גם מחוץ לפונקציה, היות והעברתי by reference). אבל האם יש מגבלה על קריאות לפונקציות על f?
נאמר ויש לי פונקציות שמשנות את המצב הפנימי של Foo, כמו למשל setBaz - האם אוכל לקרוא להן מתוך bar?
או שמא קריאה לפונקציות על Foo מוגבלת רק לפונקציות שמוגדרות const ב-Foo? (ועל כן, אם אני מבין נכון, אסור להן לשנות שדות של Foo...)
בנוסף - האם יש מגבלות על מתודות אחרות שמותר לי לקרוא להן? מניח שאסור לי לקרוא למתודות שמקבלות Foo by reference אבל לא const, כן?
תודה.