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

תוכן שנמחק תוכן שנוסף
Ybungalobill (שיחה | תרומות)
←‏בנאים: דוגמות
Ybungalobill (שיחה | תרומות)
שורה 106:
 
=== העמסת אופרטורים ===
 
הבנאי יוצר מופע מחלקה על בסיס ערך מטיפוס אחר כלשהו. אין באפשרותנו להוסיף בנאי,למשל, ל"מחלקת int" (כי לא קיימת כזאת) אך נרצה להגדיר המרות גם '''ל'''טיפוסים מובנים ולטיפוסים שאין לנו את קוד המקור שלהם. מסיבה זו ניתן להגדיר אופרטור המרה לכל טיפוס שנרצה כך:
<source lang="cpp">
class rational {
public:
operator double () const {
return c + (double)a/b;
}
};
</source>
לפונקציות אופרטורים אלה אין צורך לציין את הטיפוס המוחזר כיוון שהוא חייב להיות זהה לזה שאליו אנו ממירים.
 
חשוב לזכור כי המרות אלה הן implicit, כלומר אנחנו לא חייבים לכתוב במפורש שאנו רוצים לעשות המרה:
<source lang="cpp">
rational a;
// ...
double c = a;
</source>
ריבוי המרות מהשוג הזה עלול לגרום לדו-משמעיות או להפתעות שלא תצפו להן, לכן כדאי להמעיט בהמרות אלה.
 
{{C++|מוגבל=כן}}