الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال فى ال class

مغلق
بدأه mufic_semsem في 14 أغسطس 2004 · 4 رد · 501 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

فى حالة لما اعمل class كهذة

   class SimpleCat
   {
   public:
           SimpleCat ();                    // constructor
        SimpleCat(SimpleCat&);     // copy constructor
          ~SimpleCat();                    // destructor
   };

   SimpleCat::SimpleCat()
   {
          cout << "Simple Cat Constructor...\n";
  }
 SimpleCat::SimpleCat(SimpleCat&)
   {
         cout << "Simple Cat Copy Constructor...\n";
   }

   SimpleCat::~SimpleCat()
   {
          cout << "Simple Cat Destructor...\n";
  }

و بعدين استخدم ال function دى by value

SimpleCat FunctionOne (SimpleCat theCat);

فلما اجى اعمل object فى ال main فالconstractor العادية هية اللى بتتنفذ

اما عندما عمل calling لل function فى ال main ال copy constructor هوة اللى بيتنفذ قبل ما ينفذ الfunction و بعد ما تخلص

سؤال تانى لية فى ال copy constructor مينفعش تكون كدة

SimpleCat(SimpleCat);

ولازم تكون كدة

SimpleCat(SimpleCat&);

لية و اية الفرق

لا اله الا الله .......................................... محمد رسول الله

#2

السلام عليكم ,,

اقتباس
فلما اجى اعمل object فى ال main فالconstractor العادية هية اللى بتتنفذ

اما عندما عمل calling لل function فى ال main ال copy constructor هوة اللى بيتنفذ قبل ما ينفذ الfunction و بعد ما تخلص

مافهمت !

اقتباس
سؤال تانى لية فى ال copy constructor مينفعش تكون كدة

SimpleCat(SimpleCat);

ولازم تكون كدة

 

SimpleCat(SimpleCat&);

لية و اية الفرق

مشيد النسخ الافتراضي ,, يحتاج لكون بارمتره من النوع & والسبب في ذلك أن سيستخم غالبا في عمليات نسخ "كما هو من الأسم واضح" فيجب أن نمرر object كامل للمشيد ,, وستصبح مشكلة في الأداء خصوصا لو كان ال Object من class كبير الحجم ,, لذا نستخدم التمرير بالمرجع أو العنوان ,,

وفي الأصل تكتب مشيدات النسخ بالتعريف التالي :

SimpleCat(const SimpleCat&);

بالتوفيق ,,

تم تعديل هذه المشاركة بواسطة HGB في 14 أغسطس 2004 في 14:51

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

متكشر جدا على الرد السريع للاسئلة

و بالنسة للنقطة الاولى انا فهمت حالها لما شرحت النقطة التانية و هية ان

SimpleCat::SimpleCat(SimpleCat&)
  {
        cout << "Simple Cat Copy Constructor...\n";
  }

this code for the copy of the constructor not for the orginal constructor

لا اله الا الله .......................................... محمد رسول الله

#4

إن شاء الله اوفق بالرد على السؤال الاول

نتيجة استدعاء الداله وتمرير الكائن بالقيمه سوف يتم انشاء نسخه من الكائن في الرصه

(stack)

#5

و هذا ايضا ما فهمتة يا اخ celeron و الف شكر على الرد

لا اله الا الله .......................................... محمد رسول الله

هذا الموضوع مغلق.

مواضيع مشابهة