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

תוכן שנמחק תוכן שנוסף
Ybungalobill (שיחה | תרומות)
דף חדש: {{C++}} {{בעבודה}} שפת C++ היא בעלת טיפוסיות חזקה (Strongly-typed), משמע הדבר שהמהדר אוסר עלינו להמיר בין טיפוסים רב...
 
Ybungalobill (שיחה | תרומות)
שורה 10:
=== סגנון C ===
 
כדי להמיר ערך x מטיפוס A לטיפוס B נרשום לפני ה-x את שם הטיפוס TB בסוגריים עגולים. דוגמה המוכרת למתכנתי C היא:
<source lang="cpp">
int *p = (int*)malloc(sizeof(int));
שורה 19:
 
=== סגנון קריאה לפונקציה ===
 
כאשר נוספו לC++ הבנאים, נוספה האפשרות ליצור אובייקט זמני חסר שם בצורה הבאה:
<source lang="cpp">
complex foo = complex(1,2) + complex(2,3);
</source>
בדוגמה זו נוצרים שני אובייקטים זמניים מטיפוס complex ומאותחלים על ידי קריאה לבנאי מתאים. שני האובייקטים הזמניים מחוברים ונשמרים במשתנה בעל שם foo.
 
סגנון כתיבה זה, פירושו: "צור אובייקט מטיפוס B ואתחל באמצעות הפרמטרים הניתנים". כאשר יש לנו פרמטר אחד מטיפוס A נוכל להתיחס לפעולה זו כלהמרה של A ל-B:
<source lang="cpp">
A x = f();
B y = B(x);
</source>
 
שימו לב שלא כל כתיבה כזו היא קריאה לבנאי. יתכן שאין בנאי מתאים אך מועמס אופרטור המרה מתאים, כמו כן לטיפוסים המובנים אין בנאים:
<source lang="cpp">
int a = int(1.23456789);
</source>
 
=== אופרטורי ה-cast ===
 
ארבעת אופרטורים הללו הינם חידוש משמעותי בשפה.
 
* '''const_cast'''
* '''reinterpret_cast'''
* '''static_cast'''
* '''dynamic_cast'''
 
== המרות טיפוסים של המתכנת ==