ahmed.o.mohamed

اختبر قدراتك في C/CPP - الحلقة الرابعة, الجزء الحادي عشر

3 ردود في هذا الموضوع

السلام عليكم

الحلقة الأولى.

الحلقة الثانية - الجزء الأول.

الحلقة الثانية - الجزء الثاني.

الحلقة الثانية - الجزء الثالث.

الحلقة الثانية - الجزء الرابع.

الحلقة الثانية - الجزء الخامس.

الحلقة الثانية - الجزء السادس و الأخير.

الحلقة الثالثة - الجزء الأول.

الحلقة الثالثة - الجزء الثاني.

الحلقة الثالثة - الجزء الثالث.

الحلقة الثالثة - الجزء الرابع.

الحلقة الثالثة - الجزء الخامس و الأخير.

الحلقة الرابعة - الجزء الأول.

الحلقة الرابعة - الجزء الثاني.

الحلقة الرابعة - الجزء الثالث.

الحلقة الرابعة - الجزء الرابع.

الحلقة الرابعة - الجزء الخامس.

الحلقة الرابعة - الجزء السادس.

الحلقة الرابعة - الجزء السابع.

الحلقة الرابعة - الجزء الثامن.

الحلقة الرابعة - الجزء التاسع.

الحلقة الرابعة - الجزء العاشر.

مرحبا بكم إخوتي الكرام في الجزء الحادي عشر من الحلقة الرابعة من سلسلة اختبر قدراتك, قمتُ بتقسيم الحلقة الرابعة إلى عدة أجزاء, مُرتبة حسب الصعوبة.

أجزاء هذه الحلقة ستكون خاصة بمسائل الــ OOP.

الإختبار الرابع (الجزء الحادي عشر) :

ما هي مُخرجات الكود التالي : (يُمنع استخدام الــ Compiler)

#include <iostream>
using namespace std;

class point {
protected: // pour que x et y soient accessibles à pointcol
int x, y;
public:

point(int abs = 0, int ord = 0) {
x = abs;
y = ord;
}

virtual void affiche() {
cout << "Je suis un point" << endl;
cout << " mes coordonnées sont : " << x << " " << y << endl;
}
};

class pointcol : public point {
short couleur;
public:

pointcol(int abs = 0, int ord = 0, short cl = 1) : point(abs, ord) {
couleur = cl;
}

void affiche() {
cout << "Je suis un point coloré" << endl;
cout << " mes coordonnées sont : " << x << " " << y;
cout << " et ma couleur est : " << couleur << endl;
}
};

int main() {
point p(3, 5);
point * adp = &p;
pointcol pc(8, 6, 2);
pointcol * adpc = &pc;

adp->affiche();
adpc->affiche(); // instructions 1
cout << "-----------------" << endl;

adp = adpc;
adp->affiche();
adpc->affiche(); // instructions 2

return 0;
}

علل إجابتك !

سأضع حل السؤال بعد إنتهاء عرض المحاولات.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مجرد محاولة/

Je suis un point
mes coordonnées sont : 3 5
Je suis un point coloré
mes coordonnées sont : 8 6
et ma couleur est : 2
-----------------
Je suis un point coloré
mes coordonnées sont : 8 6
et ma couleur est : 2
Je suis un point coloré
mes coordonnées sont : 8 6
et ma couleur est : 2

في التعليمة 2

adp هو مؤشر من نوع point إلا أنه عند إسناد مؤشر من نوع pointcol إليه فإن الدالة affiche ستكون دالة الكلاس pointcol وليست دالة الكلاس الأصلية لكون الدالة affiche الأصلية virtual

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أحسنت.

فكرة السؤال كانت تعتمد على الــ Dynamic typing في الــ Virtual functions.

تم منح النقاط للمشاركات المفيدة.

يُغلق.

أراكم في الجزء الثاني عشر من الحلقة الرابعة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .