נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: Virtual Functions & הורשה - C Plus Plus

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 19 July 2006 בשעה 00:11 | IP רשוּם
ציטוט אורח

לדוגמא את הקוד הבא לא הבנתי:
קוד:

class a {
a() {}
virtual ~a() { cout << "a"; }
virtual print() { cout << "p-a"; }
};

class b : public a {
b() {}
virtual ~b() { cout << "b"; }
virtual print() { cout << "p-b"; }
};

class c : public a {
c() {}
virtual ~c() { cout << "c"; }
virtual print() { cout << "p-c"; }
};

הפונקציות הוירטואליות.. למה כולם חייב להיות וירטואלים?
ואיך זה משפיע?
מה עוזר בשימוש בפונקציות וירטואליות:?
ואיך זה יכול לייעל את הקוד?<
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 19 July 2006 בשעה 01:23 | IP רשוּם
ציטוט ניר

אם יש לך מצביע מסוג a שמצביע אל אובייקט מסוג b (שים לב דבר ראשון שאתה מבין למה זה אפשרי), ואתה קורא לפונקציה print שלו, איזה פונקציה תיקרא?

אם הפונקציה ב-a לא וירטואלית, תקרא זו של a. אם הפונקציה ב-a וירטואלית ובהנחה שב-b יש פונקציה עם חתימה זהה, תיקרא הפונקציה של b למרות שהמצביע לכאורה מצביע לאובייקט מסוג a.

תחשוב על זה שאתה מגדיר מחלקה a שהיא חיה, ומחלקה b,c שהן חתול, כלב, וקורא לפונקציה הוירטואלית "השמע קול". למרות שאתה קורא לפונקציה שבמחלקה חיה, כל פעם תקרא הפונקציה המתאימה לאובייקט בפועל עליו אתה מצביע.


__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה