5.3.2.3. Signature Conformance - חתימת הפונקציה

האלמנטים המרכיבים את חתימת הפונקציה:

  • Input Parameters.
  • Output Parameters.
  • Input-Output Parameters.
  • הערך המוחזר של הפונקציה.

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

No-variance: הסוג בחתימה אינו משתנה.

Co-variance: השינוי בסוג החתימה הוא באותו כיוון כמו ההורשה – במורד עץ ההורשה.

Contra-variance: השינוי בסוג החתימה הוא בכיוון הפוך להורשה – במעלה עץ ההורשה.



תאימות דורשת:

- Contra-variance של ה-input parameters.

- Co-variance של ה-output parameters.

- No-variance של ה-input-output parameters.

- Co-variance של הערך המוחזר.



מאת: ניצן

Borland style vptr

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