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