5.1.3. Non strict inheritanceNon strict inheritance: ידוע גם בשם הכולל הורשה. זהו מנגנון חזק יותר מהמנגנון של Strict Inheritance. מנגנון זה מאפשר לנו:
התוצאה: מנגנון חזק יותר באמצעותו ניתן לבצע דברים חדשים. נשים לב שלא ניתן, גם בעזרת מנגנון זה, להגדיר מחדש שדות, אלא רק התנהגות. לא ניתן להגדיר בבן משתנה שהוא char x אם במחלקת האב קיים שדה int x. מה היינו עושים אם היינו רוצים להגדיר שדה שכן ישתנה בבנים? הפתרון האלגנטי ביותר הוא לדאוג שהשדה יהיה מסוג מצביע לאובייקט, ולא מסוג ערך. במקרה זה הבן יוכל לשים באותו מצביע משתנה מסוג אחר שנורש מהסוג המקורי שהיה בו. |
תוכן העניינים:
קישורים רלוונטיים:שיתוף: |
Borland style vptr
לפי מה שאני מכיר:"חסרון בגישה זו: גם כאשר איננו משתמשים ב-dynamic binding – אנחנו משלמים במקום"
לא נכון , עבור מחלקה A שאין לה מתודות דינמיות לא יווצר כלל המצביע, ולמשל עבור מחלקה B שיורשת מA פשוט נוסיף בהתחלה את המצביע, ואחרי הבלוק של A את שאר האינפורמציה של B . וככה לא משלמים על מה שלא משתמשים ועקרונות C++ נשמרים.
מה שכן באמת הcasting קצת יותר מסובך....