• 0
فوضوية

ممكن شرح لهذا الكود

سؤال

السلآم عليكم ورحمه الله

ممكن لاهنتوآ تشرحون لي هالكود

#include <iostream>
using namespace std;

class OBJ{
int* i;
public:
OBJ (){
i = 0 ;
cout<<"Default Constructor is called\n";}

OBJ (int x , OBJ obj)
{ i = new int; *i = x;
cout<<"Parametrized Constructor is called\n";
}


OBJ (const OBJ &obj)
{ i = new int;i = obj.i;
cout<<"Copy Constructor is called\n";
}

~OBJ(){
cout<<"\nFreeing i\n";
delete i;}
int get_I()
{return *i ;}};

int main ()
{ OBJ obj1;

OBJ obj3(10,obj1);
cout<<"Obj 2 i value: "<<obj3.get_I();
cout<<"maha\n";
return 0; }

ومتى انادي الهادم للداله copy constructer

0

شارك هذا الرد


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

1 إجابات على هذا السؤال .

  • 0

اختي بالنسبة للشرح فهو بسيط ..

عملية تعريف صنف بسيط يحتوي في جزءه الخاص على مؤشر رقمي واحد (i ) لكن يحتوي على اكثر من طريقة لتعريف الكائن التابع له . وهي تتم عن طريق دالة المنشئ Constructor ... حيث ان الواضح في البرنامج هنالك عملية Copy او من الممكن ان نسميها Overloading ,, حصلت على Constructor لانك قمت بتعريفه باكثر من شكل .. في اول شكل يقوم بالتعريف فقط لذلك يعطي قيمة i بصفر .. وهذا هنا المنشئ الافتراضي .. لكن انتي ايضا حددتي فيما اذا كان المستخدم يريد ان يدخل قيمة الى الكائن .. فانه يستطيع ذلك من خلال عملية وضع القيمة مع عملية تعريف الكائن التابع للصنف الجديد وهذا واضح بالسطر ..

        OBJ obj3(10,obj1);

لذلك تسلسل العمليات سيكون ..

1- المنشئ الافتراضي .. Default Constructor

2- الناسخ Copy Constructor

3-المنشئ مع المعاملات .. Parametrized Constructor

تم استدعاء الناسخ في ثاني عملية لانه في السطر

        OBJ obj3(10,obj1);

تمت عملية اسناد قيمة الكائن الاول الى الثاني لذلك تمت عملية نسخ .. واستدعاء للناسخ وبعدها استدعي المنشئ ذي المعاملات ..

ارجو ان يكون الجواب مفهوما ومفيدا ..

0

شارك هذا الرد


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

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

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