C++/המרות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Damzow (שיחה | תרומות)
Men2mar (שיחה | תרומות)
 
שורה 37:
=== אופרטורי ה-cast ===
 
ארבעת אופרטורים הללו הינםהנם חידוש משמעותי בשפה. אופרטורים אלה מאפשרים לציין באופן מפורש את סוג ההמרה אותה אנו רוצים לבצע ולכן עדיפים על שני הסגנונות הקודמים.
 
אופרטורים אלה נראים בדומה לתבניות (לימדו בהמשך), את הטיפוס אליו אנו ממירים רושמים בין סוגריים משולשים ואת הערך בסוגריים עגולים: {{קוד בשורה|<nowiki>_cast<B>(x)</nowiki>}}. שימוש רב באופרטורים אלה מגעיל את הקוד. ניתן לראות בזה את כוונתו של ממציא השפה להפחית את השימוש בהמרות, ובכן נהוג להמנעלהימנע מהמרות מיותרות.
 
* '''const_cast''' - משמש להמרה של קבוע ללא קבוע, כלומר "הורדת" ה-const. המרה זו מסוכנת כי אם האובייקט הכןאכן נוצר כקבוע, המשך פעולת התוכניתהתכנית לא מוגדר (לפעמים שגיאה). להמרה זו יש משמעות כאשר המתכנת בטוח שהאובייקט הוא לא באמת קבוע.
:המרה זו יש לעשות במקרים נדירים למדי, לרוב ניתן להשתמש במקומה ב-mutable או להיוודאלוודא שלא הגזמנו בשימוש ב-const בפרמטרי הפונקציות.
<source lang="cpp">
int a = 0x2A;