25-03-2005, 11:31
|
|
|
חבר מתאריך: 20.12.01
הודעות: 20,962
|
|
על הורשה למדת?
כדי שההסבר יצליח, אתה צריך לדעת באופן כללי איך עובד OO ב-CPP, וליתר דיוק: איך
פועלים בנאים, ואיך פועל הורשה.
כאשר יש לנו מחלקת בסיס b וממנה יורשות מחלקות d1,d2,d3,... ואנחנו רוצים שהבנאי
של מחלקה d2, לדוגמה, יבצע קוד מסויים בנוסף לביצוע הקוד של הבנאי של מחלקת
הבסיס b, אנחנו נכתוב כך בערך:
קוד PHP:
class b { private: ... protected: ... public: b(int i, float f, char c) { ... } ... } class d1 : public b { private: ... protected: ... public: d1(int i, float f, char c, double d, long l) : b(i, f, c) { ... } ... }
שים לב לחלק הזה:
d1(int i, float f, char c, double d, long l) : b(i, f, c)
{
/* b(i, f, c); */
...
}
יכלנו לכתוב משהו בסגנון השורה שנמצאת בהערה במקום החלק המודגש, אבל יש לנו
שיטה אחרת לקרוא לבנאי של מחלקות האב שלנו - סימן נקודתיים אחרי הבנאי, שם הבנאי
של מחלקה האב(שזה בעצם שם מחלקת האב) ופרמטרים.
מה שקורה בקוד שלך הוא ש-CPP יש טריק שמאפשר להתייחס למשתנים במחלקה באופן
זהה(לבנאי של מחלקת אב) - כלומר, להתייחס אליהם כאל פונקציות(בנאים) ולקבוע להם
ערך כאילו מדובר בפרמטר לפונקציה.
האם הקוד הזה עדיף מבחינה טכנית? אין לי מושג. אולי יש איזו אופטימיזציה אם משתמשים
בזה, ואולי לא. מבחינת משמעות, זה זהה לאם היו כותבים בתוך גוף הפונקציה את השורה:
נ.ב.
אולי יש לי טעויות סמנטיות טפשיות, אבל לא נגעתי ב-CPP בפרט או בתכנות בכלל כבר
המוווון זמן, אז תסלחו לי
|