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

נושא: OOP (c++) virtual functions?

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


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

מה זה פונקציות וירטואליות, במה הם עוזרים לי ?
אני מדבר על c++

חזרה לתחילת העמוד הצג את כרטיס החבר של guest חפש הודעות אחרות של guest בקר בדף הבית של guest
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 19 January 2006 בשעה 21:04 | IP רשוּם
ציטוט Fate

פונקציה וירטואלית זה פונקציה שאפשר לדרוס בהורשה, ולקרוא לה מהקלאס של הבסיס...
מה קוראים לזה פולימורפיזם... תמצא איפשהו לקרוא על זה :)
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 30 January 2006 בשעה 13:58 | IP רשוּם
ציטוט אלצ'קו

גוגל יעזור לך כאן. גם כל ספר על OO...

בגדול: פונקציות וירטואליות הן פונקציות שהכתובות אליהן נכתבות במקום מיוחד(טבלת הפונקציות הרויטאליות - vtbl), והקריאה לפונקציה כזו מתפרשת בזמן ריצה דרך הטבלה, ולא בזמן הקימפול.
לכן, יכול להיות שפונקציה בסגנון:
קוד:
void f(B* pB)
{
    pB->foo();
}

תקרא לפונקציה foo של מחלקת בת שתועבר אליה:
קוד:
D o;
f(&o);

אם foo וירטואלית, תיקרא foo של מחלקת הבת D. אם אינה וירטואלית - תיקרא הפונקציה של המחלקה B(כי זה מה שכתוב בהצהרת הפונקציה, שמקבלים פויינטר ל-B).

בעקרון, אין שום סיבה שיהיו פונקציות לא וירטואליות, וכך זה ממומש בשפות עיליות שלא צריכות לדאוג לתאימות עם שפות מיושנות ומציקות / שלא מפחדות על כל מיליונית אחוז של ביצועים.
לרוב, תצטרך גם מפרקים וירטואליים(אם יש לך לפחות פונקציה וירטואלית אחת). ה-FAQ של ביורן מזכיר את הנושאים האלה.

קיצר, גוגל.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 

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

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

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