צריך הסבר למשהו

vbgames

New member
צריך הסבר למשהו

הגדרתי מחלקת מחרוזת שמוגדר בה בין השאר:
String(const char *str); operator char*(); friend String operator+(char *str1,String& str2);​
אני לא מבין למה כדי לבצע את הפעולה:
String1=String2+"xyz";​
אני צריך להגדיר אופרטור נוסף. הרי הchar יודע להפוך לstring וגם ההפך. בכל אופן, הגדרתי גם:
String operator+(const String& s);​
האם עכשיו כיסיתי את כל האפשרויות של חיבור בין המחלקה string שלי וchar?
 

vbgames

New member
עוד דבר קטן

תקנו אותי אם אני טועה אבל אני זוכר שקראתי פעם על אפשרות לעשות
x="abc"+"xyz";​
זאת אומרת "להתלבש" על המחלקה char ולהוסיף לה אופרטורים וכדומה. מישהו יכול להגיד לי איך קוראים לדבר הזה כדי שאני אחפש חומר בנושא? מתנצל מראש אם השאלות שלי מטופשות...
 
תשובה:

האופרטור שהגדרת (כ-FRIEND) מקבל CHAR* משמאל ו-STRING מימין. הפעולה שאתה עשית מקבלת בדיוק ההיפך. שים לב שהקומפיילר לא מניח שפעולת חיבור היא קומוטטיבית (אין חשיבות לסדר המחוברים). בנוסף, שים לב שאופרטור חיבור (ועוד כמה) חייבים לקבל ארגומנט אחד לפחות מטיפוס של CLASS מסויים. במילים אחרות, אסור להצהיר על אופרטור חיבור כאשר 2 הארגומנטים הם מטיפוס "פרימיטיבי" כמו INT, או מצביע. אני רק מזכיר את זה במקרה שחשבת אולי לנצל את ההמרה של STRING ל-CHAR.
 
למעלה