פורסם 2013 בספטמבר 2112 שנים לא כל כך הבנתי מה האופרטור הזה עושה,הוא בעצם מחליף לי את הגדרת סוג המשתנה? ומה קורה במצבים הבאים: int i = 42, *p = &i, &r = i;decltype(r + 0) b; decltype(*p) c;decltype(p) d; יש בשורות האלה משהו לא נכון,וגם שורות נכונות,אשמח גם להסבר למה זה נכון ולמה זה לא נכון תודה
פורסם 2013 בספטמבר 2112 שנים הוא לא משנה כלום, זה אופרטור שמחזיר לך את הטיפוס של הביטוי.לא ברור לי מה הכוונה שלך בשורות נכונות ולא נכונות.
פורסם 2013 בספטמבר 2112 שנים מחבר מה ההבדל בין שורה 3 לשורה 4? decltype(*p) c;decltype(p) d; decltype(*p) c; השורה הזאת היא טעות כי צריך לאתחל את Cלא כל כך הבנתי במקרי םהאלה מה הוא מחזירולמה רשום R+0 לדוגמא,למה לא R?
פורסם 2013 בספטמבר 2112 שנים p הוא מצביע, p* הוא הערך שעליו הוא מצביע. הטיפוסים שלהם כמובן שונים. לא הבנתי לפי מה אתה אומר שהשורה הזו היא טעות (הקומפיילר אומר שזו שגיאה?)r+0 ו-r הם לא בדיוק מאותו טיפוס. r הוא l-value, כלומר הוא יכול להופיע בצד שמאל של השמה (אפשר לכתוב לדוגמה r=5). לעומתו, r+0 הוא r-value, כלומר הוא יכול להופיע רק בצד ימין של סימן שווה (כלומר אסור לכתוב לדוגמה r+0=5).
פורסם 2013 בספטמבר 2212 שנים מחבר כן הוא אומר שצריך לאתחל אותו,ולאתחל אותו אני צריך לבצע התייחסות למשתנה אחר לדוגמא:decltype(*p) d = i;אם אני לא טועה שקול ל:int &d = i;בדוגמא של(r+0), זה יחזיר לי INT?אם זה ככה אזי (r+ 0.0) יחזיר לי DOUBLE?
פורסם 2013 בספטמבר 2212 שנים האמת היא שאני לא יותר מדי מכיר לעומק את פרטי המימוש, פשוט כי זה אופרטור חדש יחסית והוא לא היה חלק מהתקן של ++C עד תקן C++11, אז מה שאני אומר מתבסס על מה שהבנתי מויקיפדיה ו-msdn (אני מניח שאתה משתמש ב-visual studio, כן?)
פורסם 2013 בספטמבר 2212 שנים מחבר כן,אני לומד מC++ primer 5th edition נאמר לי שהוא מלמד על פי התקן ולכן לקחתי את הספר נערך 2013 בספטמבר 2212 שנים על-ידי MrAlex
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.