עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

שאלה-מצביע למצביע ופונקציות וירטואליות

Featured Replies

פורסם

שאלה 2 פה:

http://www.cs.bgu.ac.il/~spl121/wiki.files/11-a.pdf

פתרון :

http://www.cs.bgu.ac.il/~spl121/wiki.files/11-a-solution.pdf

ביקשו להמיר ל- c ובאחד השדות כתבו:

Pedestrian **_pedestrians

אני מניח שהכוונה היא מצביע למערך שכל אחד בו הוא מסוג מצביע להולך רגל.

אבל איך זה מובן מהסינקט פה?(אולי חסר סוגרים מרובעות?)

שאלה שניה: מדוע במימוש ב- c כתבו בדיסטרקטור:

virtual ~StairCaseImpl(){

delete[] _pedestrians;

}

לפי מה שלמדנו, בדיסטקרטור כותבים כל מיני פעולות שרוצים לבצע לפני המחיקה. ואחרי היציאה מהדיס' מתבצעת המחיקה, אז למה כאן המחיקה בפנים?

שאלה שלישית: כאשר כתבו את הממשק והמימוש ב- cpp , בממשק הוסיפו וירטואל לכל הפונקציות, בעוד במימוש הויספו לדיסטקרטור בלבד. מדוע? ומה המשמעות של זה אם ככה(לפי מה תהיה ההחלטה בזמן ריצה?)

פורסם

כבר אמרתי לך עשרים פעם: שים את הקוד בתוך טג קוד!

א.

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

ב.

מה שנמחק אחרי היציאה מה-dtor הוא האובייקט עצמו (StairCaseImpl). בתוך האוביקט יושב מצביע בשם pedestrians, וכשהאובייקט StairCaseImpl נמחק, המצביע pedestrians נמחק - אבל לא הזכרון שאליו הוא מצביע. את הזכרון עצמו צריך למחוק באופן ידני, וזה מה שעושה ה-delete.

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.