עבור לתוכן

פורליפומיזם בלי ירושה?

Featured Replies

פורסם

שאלו אותנו היום איך אפשר לבצע פוליפורמיזם בלי ביצוע ירושה?

למישהו יש מושג מה השיטה?

פורסם

1. עם templates (אם לשני classים יש פוקנציה עם אותה חתימה, אז אתה יכול לכתוב template שקורא לפונקציה הזו בלי לדעת איזה אובייקט זה)

2. עם פוינטרים לפונקציות (שזה די דומה למה שהקומפיילר עושה, אבל אפשר לעשות כל מיני דברים יותר מעניינים כמו שינוי ירושה תוך כדי ריצה...)

(עריכה)

אגב, דיברת על C++, נכון?

פורסם

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

(בשביל זה יש functorים - קלאסים שמתנהגים כמו פונקציות)

פורסם
  • מחבר

כן דיברתי על C++

תודה :xyxthumbs:

פורסם

פולימורפיזם וירושה אלו לא 2 דברים בלתי נפרדים?

כאילו כל הקטע שאתה פונה רק אל הBASE CLASS וע"י פונציות וירטואליות, נבחרת הפונציה הנכונה לCLASS הנגזר...

פורסם

(אופס, הקדימו אותי)

פולימורפיזם אומר שכשאתה מבצע (כביכול) את אותה הפעולה על שני אוביקטים שונים, תתבצע פעולה שונה.

ירושה זו דרך אחת להגדיר פולימורפיזם.

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

אבל זה תרגיל נחמד לממש פולימורפיזם ב- C (בלי ירושה ובלי member functions אמיתיים).

אגב, איפה שאלו את זה?

פורסם

תרגיל נחמד? נשמע כמו סיוט :)

בעיקרון כל דבר שממומש ב-C++ אפשר לממש ב-C באמצעות שינויים (יחסית) קטנים.

לדוגמה, קלאס עם מת'ודים הופך ל-struct עם פונקציות שמקבלות את הקלאס של פרמטר, וכו'.

אם אני לא טועה, הקומפיילר KCC בדיוק פועל בשיטה הזו (מתרגם את הקוד C++ לקוד C ואז מקמפל אותו ב-C).

פורסם
תרגיל נחמד? נשמע כמו סיוט

גם לממש threads בלי עזרה של מערכת ההפעלה זה אפשרי ב-C (כיף גדול לנהל בעצמך stack לכל thread)

כל ה"תרגילים" האלה דווקא מאוד עוזרים להבין איך ה"דבר האמיתי" פועל באמת.

עד כמה שאני יודע, יש כמה דברים עם templates שקצת בעייתי להמיר ל- C, אבל יכול להיות שאני טועה.

פורסם

הTAMPLATE ב- C++ מיושם כמו שמיושם MALLOC ב- C(עם VOID מוזר כזה).

פורסם

למען האמת לא.

templates זה compile-time polymorphism. מיישמים את זה עם ה- pre-processor (ב- C++ עושים את זה ע"י ה- pre-compiler)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים