קומפילציה

1 view
Skip to first unread message

tal maayan

unread,
Feb 18, 2012, 12:35:09 PM2/18/12
to 83-223
היי מצורפת שאלה ממבחן 2010 מועד ב'
(שאלה חמש סעיף א)

"
class A { };
class B : public A { };
class C : public A { };
class D : public B, C { };


א. (5 נקודות) הביטוי:
B* b = new D(); חוקי, אולם
A* a = new D();
אינו עובר קומפילציה. הסבר מדוע.
"

אשמח אם מישהו יוכל להסביר לי למה הביטוי הראשון עובר קומפילציה
מה ההבדל בבניה של שני הביטויים?

תודה!

Matan Keidar

unread,
Feb 18, 2012, 12:47:02 PM2/18/12
to 83-...@googlegroups.com
כאשר את (ואתם כמובן) ניגשים לפתור שאלה כזו, הדרך שאני ממליץ עליה היא לחשוב מה המחשב יכול להבין מהביטוי.
עבור הביטוי:
B* b = new D();
אין בעיה מכיוון שאת תצביעי על החלק ה-"B" של D.
אולם, עבור הביטוי השני תהיה לך בעיה מכיוון שגם ל-B וגם ל-C ישנו חלק של A. לפיכך, הקומפיילר לא יידע עם איזה חלק לעבוד.

מתן

2012/2/18 tal maayan <talma...@gmail.com>

tal maayan

unread,
Feb 18, 2012, 12:51:30 PM2/18/12
to 83-...@googlegroups.com
הרבה יותר מובן,
תודה רבה

2012/2/18 Matan Keidar <mata...@gmail.com>
Reply all
Reply to author
Forward
0 new messages