5.3.2.2. Contract Conformance – החוזה עם הפונקציה

תנאים מקדימים: הפונקציה החופפת יכולה לדרוש את הדרישות שהפונקציה המקורית דרשה, או פחות.

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

חריגות: לפונקציה החופפת אסור לזרוק חריגות שהפונקציה המקורית לא זרקה.

הרעיון מאחורי דרישות אלו: "Same or better principle".

מאת: ניצן

Borland style vptr

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