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

תגובה אחרונה: לפני 15 שנים מאת Johnny Zoo בנושא פונקציה וירטואלית טהורה

פונקציה וירטואלית טהורה

עריכה

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

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)תגובה
חזרה לדף "C++/פולימורפיזם".