4.2.3. Strict Inheritance

Strict Inheritance זהו סוג ההורשה הפשוט ביותר, ומשמעותו – הורשה המרחיבה את מחלקת הבסיס. המחלקה החדשה יכולה להרחיב את המבנה, הפרוטוקול וההתנהגות של מחלקת האב. בסוג זה של הורשה המחלקה היורשת אינה משנה את ההתנהגות המקורית של האב אלא רק מרחיבה אותה.

בהורשה מסוג זה, כל אובייקט השייך לסוג הנורש הוא גם אובייקט מהסוג הראשון. מבחינת תורת הקבוצות, היחס בין סוג הבסיס לסוג הנורש ממנו הינו יחס של הכלה.

היחס בין הבן לאב הוא יחס Is-A: אובייקט של מחלקת הבן הוא גם אובייקט של מחלקת האב. לפיכך, כל פונקציה המקבלת אובייקט מסוג האב, תהיה מסוגלת לקבל גם אובייקט מסוג הבן.

אנחנו מקבלים כאן את השימוש החשוב השני של ההורשה: ממשק אחיד. הממשק מוגדר במחלקת הבסיס וקיים אצל כל הבנים היורשים ממחלקה זו.

מאת: ניצן

Borland style vptr

לפי מה שאני מכיר:
"חסרון בגישה זו: גם כאשר איננו משתמשים ב-dynamic binding – אנחנו משלמים במקום"
לא נכון , עבור מחלקה A שאין לה מתודות דינמיות לא יווצר כלל המצביע, ולמשל עבור מחלקה B שיורשת מA פשוט נוסיף בהתחלה את המצביע, ואחרי הבלוק של A את שאר האינפורמציה של B . וככה לא משלמים על מה שלא משתמשים ועקרונות C++ נשמרים.
מה שכן באמת הcasting קצת יותר מסובך....
שיתוף:
| עוד