C++/פולימורפיזם: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
Johnny Zoo (שיחה | תרומות) מאין תקציר עריכה |
Johnny Zoo (שיחה | תרומות) מ קצת עריכה |
||
שורה 10:
פונקציה וירטואלית היא פונקציה שמוגדרת במחלקת האב וניתן לכתוב אותה מחדש במחלקות הנגזרות ממנה.
פונקציה וירטואלית טהורה היא פונקציה שמוצהרת כוירטואלית במחלקת האב אך לא ממומשת
פונקציה וירטואלית מוגדרת כווירטואלית כחלק ממחלקה, ואז ניתן
<source lang="cpp">
public:
virtual void draw() {
std::cout << "Cannot draw just any shape" << std::endl;
};
};
</source>
שורה 26 ⟵ 28:
class Circle: public Shape {
public:
void draw() {
/* ... Draw the Circle here ... */ };
};
</source>
פונקציה וירטואלית טהורה היא פונקציה שאינה מוגדרת כלל וכל מטרתה היא שתוגדר מחדש על ידי מחלקות שירשו מחלקה זו.
מחלקה שכוללת פונקציה וירטואלית טהורה נקראת מחלקה אבסטרקטית (מופשטת), ולא ניתן ליצור אוביקטים ממחלקה זו
<source lang="cpp">
class Shape {
public:
virtual void draw()=0; // draw is a pure virtual function
};
</source>
יצירת אובייקט מטיפוס Shape בעזרת הפקודה
<source lang="cpp">
Shape s;
</source>
תגרור שגיאת הידור. שימו לב שניתן ליצור מצביע לאובייקט מטיפוס Shape. הפקודה הבאה היא חוקית:
<source lang="cpp">
Shape *s;
</source>
|