הורשה וירטואלית

tomashin

New member
הורשה וירטואלית

נגיד ויש לנו מחלקת Animal ויש בה פונקצייה גישה קבועה למשתנה איבר שמייצג גיל חייה. מתוך Animal אני גוזר שני מחלקות:Horse,Bird. מתוך Horse ו Bird אני גוזר בצורה מרובה (משתיהן),מחלקת Pegasus(זה סוג של סוס מעופף,העדפתי שלא לפעפע כלפי מעלה ממשק וגם לא להשתמש בהמרה עם dynamic_cast). כשאני יוצר אובייקט Pegasus נקרא הבנאי ומאתחל את החייה וגם את שני מחלקות הבסיס והבסיס של הבסיס(Animal). אני משתמש בהורשה וירטואלית לבירד והורס כדי שלא יווצרו "שני עותקים". מכיוון שאני רוצה לגשת לפונקציית קבלת הגיל מאנימל ,אז יהיו שני גירסאות אחת של הורס ואחת של בירד והשאלה: האם כל נגזרת מהמחלקות הוירטואליות(Bird,orse)צריכה לאתחל גם את הבנאי של Animal ?ועד איזו רמה צריך לאתחל את הבנאי של אנימל? תודה ויום נעים
 

IdanR

New member
רק רמה אחת מתחת..

כלומר, אלא שיורשות מAnimal ישירות צריכות לאתחל באמצעות הבנאי של Animal. אם Pegasus יורש מHorse, וHorse עצמו מאתחל את הבנאי של Animal אז הרי שאין צורך. Pegasus צריך רק להפעיל את הבנאי של Horse, ולאתחל את הd.m הנוספים שיש לו. עכשיו, מה ההגיון בכך שיהיו מימושים שונים של קבלת גיל משתי חיות שונות? לכל החיות יש גיל. לא אמור להיות הבדל במימוש... אלא אם כן לא הבנתי נכון.
 
למעלה