5.3.2. Conformance and Overriding

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

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

"Same or better" Principle - פונקציה חופפת חייבת לספק לפחות את אותה פונקציונליות כמו הפונקציה הנחפפת. לפונקציה החופפת אסור להפתיע את המשתמש.

מאת: ניצן

Borland style vptr

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