صانعي فئة C ++

C Class Constructors



المنشئون مثل الوظائف. يتم استخدام هذه لتهيئة القيم وكائنات الفئة. يتم بدء هذه المنشئات عندما يتم إنشاء كائن من فئة. لا يقوم المُنشئ مباشرة بإرجاع أي قيمة. للحصول على قيمة المُنشئ ، نحتاج إلى وصف وظيفة منفصلة لأن المُنشئ ليس لديه أي نوع إرجاع. يختلف المُنشئ عن الوظيفة البسيطة بطرق مختلفة. يتم إنشاء المُنشئ عند إنشاء الكائن. يتم تعريفه في الجزء العام من الفصل.

في هذه المقالة ، سنناقش كل هذه الأنواع من الصانعين بأمثلة.







مثال 1

هذا توضيح للمُنشئ الافتراضي. كما نعلم أن المنشئات يتم إنشاؤها تلقائيًا تلقائيًا عندما نقوم بإنشاء كائن من فئة. هذا يسمى الخلق الضمني. يكون للمُنشئين نفس الاسم وهو اسم الفصل الدراسي. ضع في اعتبارك ملفًا يحتوي على كود c ++ للمنشئ لأننا نعلم أن الفصل لديه خياران ، خاص وعام. يحتوي الجزء الخاص على متغيرات البيانات ، بينما الجزء العام مخصص للوظائف التي يسترجعها أي كائن. لذلك يتم تعريف المُنشئ أيضًا في الجزء العام.



عدد صحيح()

{

x=خمسون؛

و=عشرين؛

}؛

في هذا المنشئ ، يتم تعيين القيم إلى المتغيرات. إذا أردنا إحضار القيم كمخرج ، فعلينا طباعتها في البرنامج الرئيسي.







بعد تحديد المنشئ ، يتم إغلاق الفصل. أثناء الدخول إلى البرنامج الرئيسي ، سنقوم بطباعة القيم باستخدام كائن. يصل الكائن دائمًا إلى المنشئات لأن هذه هي أجزاء من الفصل. إنشاء الكائن بسيط للغاية. يتم ذلك عن طريق تقديمه باسم الفصل. هذا هو عدد صحيح في هذا المثال. سيتم جلب القيمة من خلال طريقة النقطة. أي ، a.x.

يمكننا أن نرى إخراج الكود المصدري من المحطة الطرفية في أوبونتو. الطريقة المستخدمة للحصول على المخرجات سهلة للغاية. أولاً ، يتم تجميع الكود ، ثم يتم تنفيذه. نستخدم مترجم G ++ لعملية الترجمة. تمامًا كما في حالة C ، نستخدم GCC.



G $++ -أو filec filec.ج

./فيليك

-O يستخدم لحفظ الإخراج في الملف.

مثال 2

في هذا الرسم التوضيحي ، سنشرح المنشئات ذات المعلمات. على عكس المثال السابق ، يمكننا أيضًا تمرير الوسائط إلى المُنشئين من البرنامج الرئيسي. عندما يتم إنشاء الكائن ، يتم تمرير هذه القيم تلقائيًا إلى المتغيرات الموجودة في المنشئ لتلقي القيمة. بعض استخدامات المنشئات ذات المعلمات هي.

  • يتم استخدامه لتهيئة المتغيرات المختلفة بقيم مختلفة داخل المنشئات عند تهيئتها.
  • يتم استخدامه في التحميل الزائد للمنشئ. يتم تعريفه لاحقًا في المقالة.

الآن دعونا ننظر في الرسم التوضيحي الذي وصفناه لتوضيح هذا المفهوم. الفئة لها اسم عدد صحيح ، لذلك بالتأكيد ، سيكون اسم المنشئ هو نفسه أيضًا. في معلمات المُنشئ ، توجد قيمتان من نوع عدد صحيح. يتم تهيئتها لقبول القيم التي يتم إرسالها من البرنامج الرئيسي كمكالمة دالة.

عدد صحيح( intس ،intو)

{

إلى=x؛

ب=و؛

}؛

في المثال السابق ، تم إعطاء القيم المتغيرات داخل المُنشئ. بينما في هذا المُنشئ ، يتم تعيين المتغيرات مع المتغيرات التي لها قيمة.

إذا أردنا العرض ، نحتاج إلى تحديد دالة ستعيد القيمة حيث لا يمكن الوصول إلى هذا المتغير المُهيأ مباشرة من المُنشئ.

intgetX()

{

إرجاعإلى؛

}؛

الآن سنرى الجزء الرئيسي من البرنامج. هنا عندما يتم إنشاء الكائن ، يمكنك رؤية القيم في قسم المعلمة.

عدد صحيح(70و55)؛ {ضمني}

عدد صحيح=عدد صحيح(10وخمسة عشر)؛ {صريح}

ولعرض النتيجة ، سنقوم باستدعاء الوظائف التي تم إنشاؤها داخل الفصل باستخدام الكائن. أي v.getx ().

طريقة جلب السجل هي نفسها التي تم تقديمها من قبل.

مثال 3

يتعامل هذا المثال مع نسخ مُنشئ الفصل. يتم استخدام المُنشئ المنسوخ لتهيئة الكائن بكائن آخر من فئة مشابهة ينتمي إليها. يقوم المُنشئ هذا بنسخ البيانات الموجودة في أحد الكائنات إلى الآخر. تحتوي معلمات هذا المُنشئ على عنوان كائن من الفئة. ضع في اعتبارك الأمثلة المعطاة ، والتي قدمنا ​​فيها متغيرين من نفس أنواع البيانات بحيث يمكن الوصول إليها من خلال أي وظيفة داخل الفصل. سوف يتلقى المنشئ القيم من خلال المتغير. في الوقت نفسه ، سيتلقى المُنشئ المنسوخ الكائن فقط. وبمساعدة هذا الكائن ، سيتم جلب القيم.

حائط(حائط&الهدف)

{

طول=الهدف.الطول؛

ارتفاع=الهدف.ارتفاع؛

}

علينا حساب المساحة ، لذلك يتم تحديد وظيفة هذا الحساب هنا. سيعيد هذا القيمة إلى الوظيفة الرئيسية عندما يتم استدعاؤها. الآن سوف نلاحظ البرنامج الرئيسي للكود

سيكون استدعاء الوظيفة للمنشئ المنسوخ على هذا النحو.

جدار الجدار 2=الجدار 1؛

يستدعي الكائن المُنشئ المنسوخ ، ويتم نسخ البيانات عبر الكائن الأول من خلاله. علاوة على ذلك ، سنقوم باستدعاء الدالة لحساب المنطقة من خلال كلا الجسمين.

من الإخراج ، يمكنك أن ترى أن النتيجة من كل من المنشئات هي نفسها. هذا يعني أنه تم نسخ البيانات بالكامل بواسطة الكائن بنجاح.

مثال 4

هذا توضيح للحمل الزائد للمنشئ. يحدث ذلك عندما يتعين علينا استخدام أكثر من وظيفة واحدة داخل الفصل. يتبع التحميل الزائد للمنشئ تعليمات المنشئات ذات المعلمات. جميع المنشئين في الفصل لديهم اسم مشابه للفئة. ولكن يتم تعيين معلمات مختلفة لكل من المنشئين. يتم استدعاء كل مُنشئ وفقًا للحجة عند إنشاء الكائن.

تأمل في المثال المعطى ، والذي استخدمنا فيه ثلاثة مُنشئين. واحد بدون أي جدال. الثاني مع وسيط واحد ، في حين أن الثالث مع وسيطتين. هذا الرسم التوضيحي مشابه للذي يسبقه. كما نحسب المساحة في دالة منفصلة موصوفة داخل الفصل.

// منشئ بحجتين

شكل(intس ،intو)

{

إلى=x؛

ب=و؛

}؛

الآن ، بالانتقال إلى البرنامج الرئيسي ، يمكننا أن نرى أنه عندما نبدأ كائن الفئة ، يتم استدعاء المُنشئ الذي لا يحتوي على وسيط افتراضيًا. الآن نحن بحاجة إلى استدعاء منشئات أخرى ذات كائنات مختلفة لها حجج مختلفة.

شكل s؛

الشكل s2(8)؛

الشكل s3(4و2)؛

يتم استدعاء الوظيفة التي يمكننا من خلالها عرض القيمة من خلال نفس الكائن الذي تم إنشاؤه.

لعرض المخرجات ، سنستخدم نفس طريقة الأوامر الطرفية من خلال تجميع وتنفيذ الكود الموجود في الملف.

من الناتج ، يمكننا أن نرى أن الإجابة هي نفسها لكل منشئ.

استنتاج

في هذا البرنامج التعليمي ، رأينا أساسيات المُنشئين ووظائفهم ، بما في ذلك كيفية زيادة التحميل عليهم. يتم استخدام البناة لتهيئة المتغيرات بالقيم.