5.2.5.2. GNU

ה-vptr ממוקם תמיד לפני המחלקה הראשונה שלה יש פונקציה וירטואלית.

במקרה זה המימוש של casting הוא פשוט ביותר, אולם המימוש של הרצת פונקציה וירטואלית מסובך יותר. סביבת הריצה צריכה

אלגוריתם שימצא היכן נמצא ה-vptr.



מאת: ניצן

Borland style vptr

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