שיחה:C++/פולימורפיזם

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש

פונקציה וירטואלית טהורה[עריכה]

שגיאה בתוכן: ניתן להגדיר פונקציה וירטואלית טהורה!

class A {
public:
    virtual int f() = 0
    {
        return 42;
    }
};

הקוד תקני לגמרי. ybungalobill 14:42, 2 באוקטובר 2009 (IST)[תגובה]

מעניין, זה חדש לי. האם זה לא חסר טעם בהתחשב בעובדה שלא ניתן ליצור את האובייקט הנ"ל, וכל מחלקה שמרחיבה אותו חייבת לממש את הפונקציה הזו (אם אני לא טועה, לא נגעתי ב-CPP כבר הרבה זמן)? Johnny Zoo 16:39, 2 באוקטובר 2009 (IST)[תגובה]
לא, זה לא חסר טעם. פונקציה וירטואלית טהורה משמעותה: המחלקה היורשת צריכה לממש את הפונקציה. אבל מחלקת האב יכולה לתת מימוש "ברירת מחדל" שמחלקת הבן תוכל להשתמש בו:
class B : public A {
    int f() {
        cout << A::f() << endl;
        return 43;
    }
};
ybungalobill 20:43, 2 באוקטובר 2009 (IST)[תגובה]
טוב לדעת. לא ידעתי שהאפשרות הזו קיימת - מזכיר מחלקה מופשטת של Java. Johnny Zoo 12:53, 5 באוקטובר 2009 (IST)[תגובה]