4.3.2.1. תקציר

סוגי הפולימורפיזם השונים:

  • overloading: מזהה יחיד מייצג מספר אבסטרקטיות בו זמנית.

    למשל: operator overloading. שפת C++ מגדירה overloading לאופרטור + עבור שלמים ועבור משתני float, אבל אם לא נגדיר במפורש, עבור המחלקה Person לא יהיה קיים האופרטור +.
  • coercion: אבסטרקציה יחידה מסוגלת לשרת מספר סוגים על ידי כפייה מרומזת (הרחבת השימוש באבסטרקציה יחידה על ידי המרות סוגים).

    דוגמא: המרת טיפוסים: int ל-double וגםdouble  ל-int.
  • parametric: אבסטרקציות הפועלות בצורה אחידה על ערכים מסוגים שונים.

    לדוגמא: template בשפת C++.
  • inheritance: תת סוגים היורשים פעולות מסוג ההורה.



מאת: ניצן

Borland style vptr

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