לימוד תכנות: מה ההבדל בין מפעיל הנקודה (.) לבין -> ב- C ++? [כפילות]?


תשובה 1:

מפעיל הנקודות מספק גישה לחבר אובייקט בו האופרט השמאלי הוא שם של אובייקט או הפניה לאובייקט. מפעיל החץ מספק גישה לחבר של אובייקט אליו מפנה האופרט השמאלי (שהוא מצביע רגיל).

יתר על כן, ייתכן שמפעיל החץ יהיה עמוס יתר; כך שאם האופרנד השמאלי אינו מצביע רגיל אלא אובייקט, ייתכן שלמפעיל יש משמעות אחרת. עדיין, התוצאה חייבת להיות מצביע רגיל או התייחסות לאובייקט קיים (שמוגדר גם הוא מפעיל הגישה). מבחינה תחבירית, האופרטן הימני חייב להיות חבר (מזהה של חבר קיים) של אותו אובייקט.

דוגמה טובה לעומס יתר משמעותי של מפעיל החצים היא מצביעים חכמים. אלה מחלקות העוטפות מצביע רגיל ומוסיפות פונקציונליות רבה יותר (בעלות ייחודית על האובייקט הדינמי או ספירת הפניות). מצביעי החכמה עומסים על מפעיל החצים, כך שתוכלו להשתמש בו כדי לגשת לאובייקט שמתחת מתחת בדיוק כמו במקרה של מצביע רגיל לאובייקט הזה.


תשובה 2:

אני אומר לך במילים פשוטות ...

כדי לגשת לחברים במבנה, השתמש במפעיל הנקודות ו-

כדי לגשת לחברים במבנה דרך מצביע, השתמש במפעיל החץ.

לדוגמה, שקול את המבנה הבא ...........

סטודנט מבנה {
  reg into;
  שם char [25];
} std;

כדי להקצות את הערך "suhail" לחבר השם של האובייקט std, היית כותב משהו באופן הבא ...

strcpy (std.name, "suhail");

אם ptr_std הוא מצביע לאובייקט של תלמיד טיפוס, ואז להקצות את הערך "suhail" לחבר השם של אובייקט std, אתה צריך לכתוב ככה ...

strcpy (ptr_std-> שם, "suhail");

תשובה 3:

מפעיל המצביע הוא מה שמכונה סוכר תחבירי: משהו לא באמת הכרחי אבל מקל על ההקלדה בתכנית וקריאה. ההצהרה

p-> שדה

זהה ל

(* p) שדה

אם p הוא למעשה מצביע. אם מדובר באובייקט, אז המהדר יפעיל את שיטת המפעיל -> () על האובייקט במקום.