ABA


"מה ההבדל בין מחלקה למבנה? |="
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #14872 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 14872
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   16:06   02.08.08   
אל הפורום  
  מה ההבדל בין מחלקה למבנה? |=  
 
   ערכתי לאחרונה בתאריך 02.08.08 בשעה 16:25 בברכה, ronen333
 
עד עכשיו עבדתי רק עם מחקלות ולא ממש שמעתי על שימוש במבנים.
אבל עכשיו ראיתי באיזה אתר שדוגמה לstruct אבל זה לא נראה שונה מהשימוש בCLASS |=.

מישהו יכול להסביר לי מה ההבדל בינהם? הבנתי רק שSTRUCT הוא VALUE TYPE ולא REF TYPE והוא לא יכול להוריש/לרשת..

הייתי רוצה לדעת מתי שאני אצתרך למשל להשתמש במבנה..


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  בטח Sn00py  02.08.08 16:26 1
     יש עוד קצת הבדלים שנובעים מזה Sn00py  02.08.08 16:27 2
     וואי תודה רבה אחי ronen333  02.08.08 16:53 3
  יש לי עוד שאלה וחבל שאני אפתח עוד אשכול ביגלל זה P= ronen333  02.08.08 16:58 4
     אתה יכול לגשת לתאים מעבר למוגדר במערך Sn00py  02.08.08 17:23 5
         מה זאת אומרת? ronen333  02.08.08 21:50 6
             זה קיים בשביל אנשים שבאים ואומרים akoka 03.08.08 10:33 7
                 שאלתי את השאלה הזאת ואף אחד לא ענה לי ronen333  03.08.08 12:00 8
                     הוא לא מצביע אליו ,הוא מצביע לכתובת שלו akoka 03.08.08 12:02 9
                         ובמה זה שונה? ronen333  03.08.08 12:05 10
                             השימוש הכי שימושי...? idan192 03.08.08 12:11 11
                                 מצטער גבר לא כל כך הצלחתי לבין אותך ronen333  03.08.08 12:30 12
                                     אי אפשר להסביר את זה על רגל אחת. akoka 03.08.08 12:33 13
                                         חיפוש קצר בגוגל הביא אותי לאתר הבא akoka 03.08.08 12:45 14
                                             תודה גבר ronen333  03.08.08 12:47 15
                                     תסביר בדיוק איזה חלק לא הבנת. פשוט רפרנס תורם בכל-כך הרבה תחומים. idan192 03.08.08 13:42 16
                                         אממ ronen333  03.08.08 14:12 17
                                             יפה :) בדיוק, שזה אפשרי עם רפרנסים! idan192 03.08.08 14:24 18
                                                 אבל למה שתעשה את זה? ronen333  03.08.08 19:41 19
                                                     זה מאוד הגיוני לתכנות ברמה גבוהה. ופה זה לא רפרנס! זה לקבל כתובת זכרון idan192 03.08.08 22:48 20
                                                         * = REF ronen333  03.08.08 23:43 21
                                                             לא. * זה פויינטר. idan192 04.08.08 08:02 22
                                                                 POINTER=*= מצביע REF=הפניה=& ? ronen333  04.08.08 09:15 23
                                                                     גם לא מדוייק. יש & שפשוט מראה לך את הכתובת של הזכרון. idan192 04.08.08 10:47 24
                                                                         אין לי זמן X= ronen333  04.08.08 11:09 25
                                                                             מציע לך ,ממש ממליץ לך מכול הלב akoka 04.08.08 11:50 26
                                                                                 תודה, אני אשתדל גבר =] ronen333  04.08.08 12:35 27

       
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   16:26   02.08.08   
אל הפורום  
  1. בטח  
בתגובה להודעה מספר 0
 
   דבר ראשון, ההבדל הכי גדול. מחלקה היא REFERENCE TYPE ומבנה הוא VAULE TYPE. מכאן נובעים כל ההבדלים. שאתה יוצר מחקלה נוצר מקום ב HEAP והפניה למחלקה הזאת ב STACK שלך. שאתה יוצר מבנה אין שום קשר לHEAP וכל המבנה יושב על הSTACK.

הבדלים עיקריים:

1. במבנה אתה לא חייב לכתוב בנאי(קונסטרקטור) - מסיבה מאוד פשוטה, לא חייבים לאתחל אותו! אתה לא צריך לכתוב משפט NEW על מבנה. אתה יכול לעשות דבר כזה:


struct something
{
public int i;
}

something myStruct;
myStruct.i = 3;

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

2. משהו מאוד חשוב: אי אפשר לרשת ממבנה, ואי אפשר לגרום למבנה לרשת ממשהו אחר. אי אפשר לעשות מבנים אבסטרקטים, וכל מבנה הוא בהכרח sealed.

3. הבדל חשוב נוסף: בSTRUCTS אין אתחול אוטומטי של משתנים. כלומר, אם במחלקה תשים int i הוא יקבל את הערך 0 לדוגמה אוטומטי, bool some יקבל FALSE וכו'. ב STRUCT אתה תקבל שגיאת קומפילציה שאין ערך למשתנים.

בהצלחה

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   16:27   02.08.08   
אל הפורום  
  2. יש עוד קצת הבדלים שנובעים מזה  
בתגובה להודעה מספר 1
 
   אי אפשר לנעול מבנים עם משפט LOCK (לשימוש בת'ראדים) וכו' וכו'... אבל כתבתי את החשובים

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   16:53   02.08.08   
אל הפורום  
  3. וואי תודה רבה אחי  
בתגובה להודעה מספר 1
 
   אחלה הסבר מפורט


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   16:58   02.08.08   
אל הפורום  
  4. יש לי עוד שאלה וחבל שאני אפתח עוד אשכול ביגלל זה P=  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 02.08.08 בשעה 17:02 בברכה, ronen333
 
מה המילה השמורה UNSAFE עושה בעצם?
The unsafe keyword denotes an unsafe context, which is required for any operation involving pointers.
לא הבנתי XD.. משתמשים בזה שיש תוכן "לא בטוח" וזה שימושי להפניות? P=
DONT GET IT...

מה זה יענטו מודיע לקומפילר שיכול להיות שיהיה פה שגיאה ונגיד אני מנסה לעשות לNULL פעולה כל שהיא?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   17:23   02.08.08   
אל הפורום  
  5. אתה יכול לגשת לתאים מעבר למוגדר במערך  
בתגובה להודעה מספר 4
 
   כמו ב C++, אתה יכול לגשת למשתנים לפני שהגדרת להם ערך, אין GC.

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   21:50   02.08.08   
אל הפורום  
  6. מה זאת אומרת?  
בתגובה להודעה מספר 5
 
   איך זה אפשרי ולמה זה קיים?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   10:33   03.08.08   
אל הפורום  
  7. זה קיים בשביל אנשים שבאים ואומרים  
בתגובה להודעה מספר 6
 
   "למה אין פויינטרים בC#:( אחנו רוצים לדאוג לזיכרון לבד:(".


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   12:00   03.08.08   
אל הפורום  
  8. שאלתי את השאלה הזאת ואף אחד לא ענה לי  
בתגובה להודעה מספר 7
 
   מה ההבדל בין מצביע להפניה? |=
זה לא בעל אותה משמעות? =/ אם אובייקט מופנה לערך מסוים אז הוא בעצם מצביע עליו.. לא? |=


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   12:02   03.08.08   
אל הפורום  
  9. הוא לא מצביע אליו ,הוא מצביע לכתובת שלו  
בתגובה להודעה מספר 8
 
   בזיכרון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   12:05   03.08.08   
אל הפורום  
  10. ובמה זה שונה?  
בתגובה להודעה מספר 9
 
   ערכתי לאחרונה בתאריך 03.08.08 בשעה 12:05 בברכה, ronen333
 
מה אתה יכול לעשות עם מצביע שאתה לא יכול לעשות עם הפניה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
idan192

   12:11   03.08.08   
אל הפורום  
  11. השימוש הכי שימושי...?  
בתגובה להודעה מספר 10
 
   שעם רפרנס אתה יכול לרשום דבר כבר max(a,b)=x כאשר בפויינטר אתה יכול
(x=max(a,b בלבד.
שוב, הפניה זה תוסף של ++C. זו מערכת יותר מתוחכת מהרפנס של C.
כביצעתי את ההשמה למעלה הוא יודע אוטו' להציב בתוך ה-max בין a ל-b את הערך x, ואם x היה פויינטר לזכרון כלשהו אז הוא היה יודע בכל זאת ש-a ו-b הם לא מכילים תוכן של זכרון ולכן את מכניס לתוך את תוכן הזכרון אליו מצביע הפויינטר.
הרבה יותר עילי = הרבה פחות דורש מהמשתמש לשבור את מתי אתה עם זכרון ומתי אתה עם תוכן.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   12:30   03.08.08   
אל הפורום  
  12. מצטער גבר לא כל כך הצלחתי לבין אותך  
בתגובה להודעה מספר 11
 
   משהו בניסוח שלך מאוד מבלבל אותי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   12:33   03.08.08   
אל הפורום  
  13. אי אפשר להסביר את זה על רגל אחת.  
בתגובה להודעה מספר 12
 
   תנסה לחפש מידע בגוגל על כול הרעיון מאחורי ריפרנסים ופוינטרים ,אני בטוח שלא חסר מידע על זה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   12:45   03.08.08   
אל הפורום  
  14. חיפוש קצר בגוגל הביא אותי לאתר הבא  
בתגובה להודעה מספר 13
 
   http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Companion/cxx_crib/pointers.html


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   12:47   03.08.08   
אל הפורום  
  15. תודה גבר  
בתגובה להודעה מספר 14
 
   אני אסתכל על זה אחרי שאני אוכל משהו למה אני לא יכול כבר לראות בעיניים O_O.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
idan192

   13:42   03.08.08   
אל הפורום  
  16. תסביר בדיוק איזה חלק לא הבנת. פשוט רפרנס תורם בכל-כך הרבה תחומים.  
בתגובה להודעה מספר 12
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   14:12   03.08.08   
אל הפורום  
  17. אממ  
בתגובה להודעה מספר 16
 
   לא הבנתי את הדוגמה של ה
max(a,b)=x

איך זה אפשרי ביכלל להכניס לערך מוחזר X?

ולא הבנתי בערך כל מה שכתבת פה-
"כביצעתי את ההשמה למעלה הוא יודע אוטו' להציב בתוך ה-max בין a ל-b את הערך x, ואם x היה פויינטר לזכרון כלשהו אז הוא היה יודע בכל זאת ש-a ו-b הם לא מכילים תוכן של זכרון ולכן את מכניס לתוך את תוכן הזכרון אליו מצביע הפויינטר."


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
idan192

   14:24   03.08.08   
אל הפורום  
  18. יפה :) בדיוק, שזה אפשרי עם רפרנסים!  
בתגובה להודעה מספר 17
 
   יש פונקציה max שמחזירה את המקסימלי בין a ל-b וכשאתה מחזיר רפרנס לפונקציה אתה יכול להציב משתנה באחת מהן כמו שרשמתי.
זה חלק מהיופי ברפרנס
זה תורם אח"כ גם לאופרטורים.
למשל כשאשר רושם X=3 כאשר = זה אופרטור שאתה בנית, איך אתה חושב שמתבצעת ההשמה? בעזרת רפרנס.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   19:41   03.08.08   
אל הפורום  
  19. אבל למה שתעשה את זה?  
בתגובה להודעה מספר 18
 
   ערכתי לאחרונה בתאריך 03.08.08 בשעה 19:41 בברכה, ronen333
 
למה שתשים ערך X למשהו שמוחזר כמקסימלי?
אני לא מבין את ההגיון XD.

למשל כאן:


class Animal {
public:
char name[32];
int kennel;
int days;
Animal();
void PrintName();
};


class Cat:public Animal {
public:
catFood food;
Cat();
void CatBill();
};


Animal *p;
Animal b;
Cat c;
p = &b;
p = &c;


מה ההבדל בין השימוש שP כמצביע(אין לי מושג למה) יקבל הפניה לB ואז ההפניה שלו משתנה לC...
|=


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
idan192

   22:48   03.08.08   
אל הפורום  
  20. זה מאוד הגיוני לתכנות ברמה גבוהה. ופה זה לא רפרנס! זה לקבל כתובת זכרון  
בתגובה להודעה מספר 19
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   23:43   03.08.08   
אל הפורום  
  21. * = REF  
בתגובה להודעה מספר 20
 
   לא ככה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
idan192

   08:02   04.08.08   
אל הפורום  
  22. לא. * זה פויינטר.  
בתגובה להודעה מספר 21
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   09:15   04.08.08   
אל הפורום  
  23. POINTER=*= מצביע REF=הפניה=& ?  
בתגובה להודעה מספר 22
 
   ערכתי לאחרונה בתאריך 04.08.08 בשעה 09:16 בברכה, ronen333
 
עכשיו זה נכון? P=


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
idan192

   10:47   04.08.08   
אל הפורום  
  24. גם לא מדוייק. יש & שפשוט מראה לך את הכתובת של הזכרון.  
בתגובה להודעה מספר 23
 
   אם int A = 12; מצביע בזכרון ל-0x8542210 אז int *B = &A; יכיל את תא הזכרון של A.

רפרנס & זה משהו מתקדם של ++C, כפי שהסברתי לך הוא משתמש לאופטור אוברלואדינג בין היתר. זה ממש לא אותו.
תחזור שוב על ההבדלים. נראה לי שאתה עדיין מבולבל בכל החומר של זכרון כי השתמש בשפה עילית יותר מדיי.
תתחיל מ-C, לא מ-++C ובעיניי הכל יותר יתבהר לך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   11:09   04.08.08   
אל הפורום  
  25. אין לי זמן X=  
בתגובה להודעה מספר 24
 
   מחר המבחן בגאמא..
אני אחזור על זה בלי שום קשר אחר כך. אבל נראה לי שזה מסוג המקרים שאני יודע את החומר בלי לדעת שאני יודע.

אני אתן דוגמה ואתה תגיד לי אם אני צודק.
שאתה רוצה לשנות ערך למשתנה לוקלי דרך פונקציה גם כאשר היא VOID אתה שולח הפניה (REF).
שאתה עובר נגיד בLIST מאיבר לאיבר אתה משתמש במצביע.

אני צודק? כי אם כן אז תפסתי את זה P= ופשוט המורה הטיפשה שלי השתמשה במוסג הפניה לשניהם.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   11:50   04.08.08   
אל הפורום  
  26. מציע לך ,ממש ממליץ לך מכול הלב  
בתגובה להודעה מספר 25
 
   לפני המבחן בגאמא ,תעשה סדר בראש שלך ,כי אתה תלך לשם מבולבל עם מיליון שפות בראש ,אז אם אתה רוצה לעבור ,תסדר את המידע שבראש שלך טוב טוב ,תתרגל כמה שרק אפשר ,ומחר תלך תיהיה עצמך ואתה עובר ,מילה שלי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   12:35   04.08.08   
אל הפורום  
  27. תודה, אני אשתדל גבר =]  
בתגובה להודעה מספר 26
 
   אני כבר יכול לדקלם איך עושים מיון בועות וחיפוש בינארי עכשיו אני אחזור קצת על תרגילים נחמדים שהיו לי פעם על מבני נתונים.. צריך קצת למצוא ברקורסיה.. ושפות WEB אני אעשה כל מיני מבחנים פשוטים שיש בW3SCHOOL- שיעודדו אותי קצת.

C++ אני אעזוב בצד עכשיו כי אז אני אלחץ לגבי השאר ובמילא סימתי להם בשאלון שאני יודע את זה ברמה נמוכה (1/5) ואלוהים יודע מה יהיה הרמה של השאלות שם |=...

נקווה לטוב..

אחי אם יש לך משהו שיכול לעזור לי (כמו תרגילים) אני אשמח לקבל =]

.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net