19-10-2007, 23:27
|
|
|
חבר מתאריך: 19.06.03
הודעות: 549
|
|
יוניון וסטראקט הם שני דברים שונים לגמרי
נכון, הם מוגדרים באופן דומה וההיתיחסות אליהם דומה, אבל ההבדל הוא מהותי.
יוניון נותן דרך להסתכל על אותו איזור בזיכרון במספר אופנים.
לעומת זאת סטראקט מאגד בתוכו מספר סוגים.
גודל של יוניון יהיה תיד הגודל של הטיפוס בעל הגודל המקסימאלי שבתוכו. לעומת זאת סטראקט יהיה בעל גודל של סכום כל הסוגים שבתוכו.
בעוד שהשימוש בסטראקט די ברור, יוניון מאפשר להתסכל על איזור בזיכרון במספר אופנים שונים. נניח שיוניון מכיל מצביע לסטראקט A ומצביע לסטראקט B. בפעול יהיה איזור בזיכרון שיממש את היוניון הזה ויהיה בו מצביע אחד שיצביע ל VUFFER כלשהו בזיכרון. על אותו BUFFER פעם ניתן יהיה להתסכל כאילו הוא מסוג A ופעם כאילו הוא מסוג B.
יוניון יכול מאד לעזור אם רוצים לממש "פולימורפיזם" בשפת C.
|