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

תוכן שנמחק תוכן שנוסף
Atavory (שיחה | תרומות)
אין תקציר עריכה
Ybungalobill (שיחה | תרומות)
מאין תקציר עריכה
שורה 1:
{{לשכתוב}}
{{C++}}
 
מאפיין בסיסי של תכנות מונחה עצמים הוא מנגנון ההורשה, שמאפשר לנו לתת פתרון ספציפי לבעיה מסויימת מתוך פתרון גנרי קיים. למשל, נתונה לנו מחלקה המתארת אוגר שיודע לאכול ולישון, ומוגדרת בצורה הבאה:
שורה 20 ⟵ 21:
class BattleHamster
{
int teeth;
private:
int teethcolour;
int colour;
public:
BattleHamster();
~BattleHamster()
void Eat();
void Sleep();
void Attack(Hamster &pVictim);
void Attack(BattleHamster &pVictim);
}
</source>
שורה 52:
כעת, אנחנו רוצים להגדיר אוגר קרב סיבירי, שהוא אוגר קרב וגם חיה סיבירית. אנחנו יכולים לרשת את מחלקת אוגר הקרב הסיבירי משתי המחלקות הקודמות שהגדרנו, מחלקת החיה הסיבירית ומחלקת אוגר הקרב, בצורה הבאה:
<div style="direction: ltr;">
class CSybirianBattleHamsterSybirianBattleHamster: BattleHamster, CSybirianAnimalSybirianAnimal {};
</div>
באופן הזה יצרנו את מחלקת אוגר הקרב הסיבירי בשורת קוד אחת, וקיבלנו אוגר קרב שיודע לעשות גם את כל מה שחיה סיבירית יודעת לעשות.
 
השימוש בהורשה מרובה הוא אמנם מאוד לא מקובל, ובשפות מודרניות יותר כמו C#/VB.NET וכיוב' הוא בלתי אפשרי, אך לפעמים הוא מועיל.
{{C++|מוגבל=כן}}
{{קצרמר}}
 
[[קטגוריה:C++]]