עבור לתוכן

c++ בנאים ומחלקה שמכילה מחלקה אחרת

Featured Replies

פורסם

נניח שאני יוצר מופע של המחלקה A, שמכילה (לא יורשת) את המחלקה B.

למשל כך:




class B
{

public:
B()
{
cout << "hello B" << endl;
}

};

Class A
{
public:
A()
{
cout << "hello A" << endl;
}
B test;
};

ביצירת מופע, איזה בנאי יופעל קודם? של A או של B?

חשבתי שקודם של A, כי הבנאי זה הדבר הראשון שמופעל ביצירת מופע, אבל מסתבר שדווקא הבנאי של B. למה זה?

פורסם

לפני שמבוצע הקוד של הבנאי, מאותחלים כל שדות המחלקה (בסדר בו הוגדרו במחלקה).

(אם לבנאי הייתה רשימת אתחול, אז השדות היו מאותחלים לפיה. זה מתקשר לכך שבטח שמעת שלא מומלץ לאתחל שדות בתוך הבנאי אלא ברשימת האתחול.)

פורסם
  • מחבר

תודה, ברשותך שאלה נוספת (בלי קשר לשאלה הראשונה ולקוד שצירפתי)

נניח שמחלקה A יורשת מ-B ומ-C. איזה בנאי יופעל קודם ביצירת מופע של A, האם C או B?

נערך על-ידי א

פורסם

לפי הסדר שבו כתבת את המחלקות שמהן A יורשת.

(אלא אם כן יש ירושה וירטואלית, ואז החוקים קצת משתנים.)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים