אני מתנצל
יום ארוך, שבוע ארוך, חודש ארוך. א. עם כל העצבים נתתי לך את התשובה. ב. מומלץ מאוד לקרוא את ה-FAQ כולו. אפשר במיטה, לפני השינה, בפאלם, אבל באמת שכדאי לקרוא. (אגב, יש גם FAQ ל-C, וגם הוא מומלץ. ג. מבחינת שימוש, בלי הסברים מה קורה בפנים, קריאה לפונקציה וירטואלית המופעלת על מצביע (או reference) לאוביקט מסוג בן, גם אם המצביע הוא מסוג אבא, תפעיל את הפונקציה המתאימה לבן.
#include <iostream> using namespace std; class A { public: virtual void p() // Remove the virtual here and see what happens { cout << "A" << endl; } }; class B : public A { public: void p() { cout << "B" << endl; } }; int main() { B * b = new B; A * a = b; a->p(); return 0; }
מקווה שעכשיו זה יותר ברור.