יום שני, 15 במאי 2017

חבר (friend) של המחלקה

Friend

ראינו שאין לשום דבר מחוץ למחלקה גישה למשתנים ולפונקציות שבחלק ה private של המחלקה.
יש יוצא דופן:
אם נגדיר פונקציה/מחלקה כלשהי כ friend של מחלקה, היא תוכל לגשת לכל התוכן ה private של אותה מחלקה.

מבנה של מחלקה חברה:

class First{
         .
         .
         .
public:
friend class Second; // זה שם מחלקה האחרת Second 
         .
         .
         .
};

-כך מצהירים על המחלקה Second כ friend של המחלקה First.


אילו סוגי זכרונות יש


מאמר מאת: www.4project.co.il


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

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

ROM - Read Only Memory
זכרון לקריאה בלבד. תחשבו עליו כאוסף של חוטים שחלק חתוכים שלא מוליכים וחלק שלמים שכן מוליכים. כלומר חלק יחזירו 0 לוגי וחלק 1 לוגי כשקווי הכתובת יצביעו עליהם. מצב החוטים/הביטים בדרך כלל נקבע במהלך היצור של הרכיב.

PROM - Programmable ROM
גם סוג זה של זכרון נועד לקריאה בלבד, אבל הוא שונה מ-ROM רגיל בזה שאפשר לתכנת אותו פעם אחד בלבד אחרי שהרכיב יצא מהיצור. כלומר אתם מקבלים רכיב "ריק" (Blank) וצורבים בו את המידע שישמש לקריאה בלבד.

יום ראשון, 14 במאי 2017

פונקציה הורסת במחלקה

פונקציה הורסת Destructor

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

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