C++/פולימורפיזם: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Johnny Zoo (שיחה | תרומות)
מ קצת עריכה
Johnny Zoo (שיחה | תרומות)
מאין תקציר עריכה
שורה 1:
{{C++}}
{{עריכה|סיבה=סגנון, קטעי קוד דורשים אינדנטציה מחודשת}}
 
==פולימורפיזם==
שורה 12 ⟵ 11:
פונקציה וירטואלית טהורה היא פונקציה שמוצהרת כוירטואלית במחלקת האב אך לא ממומשת. המטרה היא שיממשו אותה במחלקות.
 
פונקציה וירטואלית מוגדרת כווירטואלית כחלק ממחלקה, ואז ניתן לדרוס אותה (Overwrite אם תרצה לקרוא לזה ככהOverride) במחלקות היורשות ממנה.
 
<source lang="cpp">
שורה 34 ⟵ 33:
</source>
פונקציה וירטואלית טהורה היא פונקציה שאינה מוגדרת כלל וכל מטרתה היא שתוגדר מחדש על ידי מחלקות שירשו מחלקה זו.
מחלקה שכוללת פונקציה וירטואלית טהורה נקראת מחלקה אבסטרקטית (מופשטת), ולא ניתן ליצור אוביקטים ממחלקה זו. ניסיון לעשות זאת יגרור שגיאה בזמן ההידור. כלומר, נניחאם והמחלקההמחלקה שלנו נראית כך:
 
<source lang="cpp">
class Shape {
public:
virtual void draw()=0; // draw is a pure virtual function
};
</source>