חידת Extra Credit ב- ++C

AfiComp

New member
חידת Extra Credit ב- ++C

זוהי שאלה שניתנה לנו ע"י המורה שלנו במכללה (לטובת ניקוד בונוס
):
Class Bank { int account, balance; Public: Bank (int a, intb=0) { account=a; balance=b: } }; void main() { Bank b(12345); }​
עד כאן ה - Class וה - main. המטרה: א. מבלי לשנות את ה- Class ומבלי ליצור אובייקט Bank חדש, לשנות את היתרה (balance) של חשבון (account) מספר 12345. ב. מה שינוי הנדרש על מנת לחסום שינויי יתרה שכאלו. בהצלחה, AfiComp
 

shadowrunner

New member
נדמה לי ש...

I think that if you want to change b you can use the fact that when you write: b = 34; The compiler performs implicit casting of 34 into object Bank and then copies the new object into b. You can avoid this by using explicit keyword before your constructor
 

dogood

New member
אולי זה יספיק

א. שימוש ב- constractor דוגמאת (<כל ערך,>b= Bank(12345 ב. שימוש בהעמסת אופרטורים. אם משהו לא ברור אז אני פה חוץ מזה אולי למשהו יש פתרון טוב יותר
 
אני מקווה

שהבנתי נכון את השאלה...
class Bank2 : private Bank { public: Bank2(int a, int b) : Bank(a,b) {}; } main { Bank2(12345,10) } To prevent this: public: Bank(...) ==> private: Bank(...)​
 
יכול להיות גם

שאפשר להבין את זה אחרת... למה אתה מתכוון ב"אי אפשר לשנות את balance" ?בכלל או אחרי האיתחול הראשוני שלו? אני מסכים עם התשובה של TZURYOAV, אבל רק באופן חלקי, כי עצם העובדה שאפשר לקרוא לבונה כך - זה אומר שאפשר לעשות את זה כמה פעמים שרוצים ולכן אי אפשר למנוע את זה.
 
למעלה