الانتقال إلى المحتوى الرئيسي

كيفية استدعاء المدمر: دليل كامل للاستخدام

  • الأستاذة كاملة المملوك
  • الأسئلة

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

قبل تعلم كيفية استدعاء المدمر ، من المهم أن نفهم متى يتم استدعاؤه. يتم استدعاء المدمر تلقائيا في الحالات التالية:

  1. عندما يخرج الكائن عن الأنظار.
  2. عندما يتم حذف كائن بشكل صريح بواسطة عبارة الحذف.
  3. في نهاية البرنامج ، عندما يتم تدمير جميع الكائنات في الذاكرة.

ملاحظة: يتم استدعاء المدمر دائما بالترتيب العكسي الذي تم استدعاء المنشئين به إذا تم إنشاء الكائنات أثناء تنفيذ البرنامج.

  1. ما هو المدمر ولماذا هو مطلوب?
  2. المبادئ الأساسية للعمل مع المدمر
  3. كيفية إعلان المدمر
  4. بناء جملة إعلان المدمر
  5. في أي الحالات يتم استخدام المدمر
  6. كيفية استدعاء المدمر
  7. استدعاء المدمر التلقائي
  8. دعوة يدوية من المدمر
  9. المدمر والاستثناءات
  10. كيف يتعامل المدمر مع الاستثناءات
  11. سؤال وجواب
  12. كيف يمكنني استدعاء المدمر?
  13. ماذا يحدث عندما يسمى المدمر?
  14. هل من الممكن استدعاء المدمر يدويا?

ما هو المدمر ولماذا هو مطلوب?

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

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

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

عادة ما يكون للمدمرين اسم مطابق لاسم الفئة ، ولكن مع بادئة التلدة (~). على سبيل المثال ، بالنسبة لفئة "الدائرة" ، يمكن استدعاء المدمر "~الدائرة". يشير هذا إلى المترجم إلى أنه يجب استدعاء هذه الطريقة عند تدمير كائن.

يمكن أن يكون استخدام المدمرات مفيدا بشكل خاص عند العمل مع الذاكرة الديناميكية ، مثل تخصيص الذاكرة وعمليات إلغاء التخصيص باستخدام الدالتين "جديد" و "حذف". يسمح لك المدمر بتحرير الذاكرة المخصصة تلقائيا عند تدمير كائن ، مما يمنع التسريبات.

المبادئ الأساسية للعمل مع المدمر

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

  • المدمر له نفس اسم الفئة ، ولكن مع البادئة ~.
  • المدمر ليس لديه حجج ولا يعيد شيئا.
  • يتم استدعاء المدمر تلقائيا عند الخروج من النطاق الذي تم إنشاء الكائن فيه ، أو عند استدعاء عامل الحذف لكائن تم إنشاؤه ديناميكيا.

للعمل بشكل صحيح مع المدمر ، من المهم مراعاة المبادئ التالية:

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

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

كيفية إعلان المدمر

المدمر (أو مدمر الفئة) هو طريقة خاصة يتم استدعاؤها تلقائيا عند حذف مثيل لفئة من الذاكرة. يمكن استخدام المدمر لتحرير الموارد وإغلاق الملفات واتصالات الشبكة وتنفيذ عمليات التشطيب الأخرى.

لإعلان مدمر ، أضف تيلدا ( ~ ) قبل اسم الطريقة. على سبيل المثال:

فئة ميكلاس {

العامة:

// منشئ الفئة

// فئة المدمر

~ ميكلاس () {

// يتم تنفيذ الكود عند حذف مثيل للفئة

}

};

يمكن وضع تعريف المدمر داخل الفصل ، بعد إعلان الأساليب والحقول. لاحظ أن المدمر لا يقبل الوسائط ولا يعيد القيم.

يتم استدعاء المدمر تلقائيا ويمكن استخدامه لإجراء عمليات تنظيف الموارد اللازمة.

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

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

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

بناء جملة إعلان المدمر

المدمر هو طريقة فئة خاصة يتم استدعاؤها تلقائيا عند تدمير كائن. غالبا ما يستخدم المدمر لتحرير الموارد مثل الذاكرة أو الملفات التي تم تخصيصها أو فتحها في نص كائن ما.

يتم استخدام بناء جملة خاص للإعلان عن المدمر في ج C:

~ اسم الفئة ()

{

// كود المدمر

}

هو اسم الفئة التي يتم تعريف المدمر.

لا يقبل المدمر الوسائط ولا يعيد القيم. لديها نفس معدلات الرؤية والوصول مثل طرق الفصل.

مثال:

فئة ميكلاس

{

العامة:

// منشئ

ميكلاس (قيمة إنت): م_القيمة (القيمة)

{

الأمراض المنقولة جنسيا::كوت < < "منشئ يسمى!"<<الأمراض المنقولة جنسيا:: إندل;

}

// المدمر

~ ميكلاس ()

{

الأمراض المنقولة جنسيا:: كوت < < " المدمر دعا!"<<الأمراض المنقولة جنسيا:: إندل;

}

خاص:

إنت م_القيمة;

};

كثافة العمليات الرئيسية()

{

ميكلاس أوبج (42);

العودة 0;

}

، الرسالة " منشئ يسمى!"سيتم عرضها ، وعندما تدميره" ، ودعا المدمر!". يتم استدعاء المدمر تلقائيا عندما يخرج الكائن من النطاق.

في أي الحالات يتم استخدام المدمر

، المدمر هو طريقة فئة خاصة يتم استدعاؤها عند تدمير كائن. وهي مصممة لتحرير الموارد المخصصة من قبل كائن خلال حياته.

تستخدم المدمرات على نطاق واسع في البرمجة للأغراض التالية:

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

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

. عادة لا تكون هناك حاجة لاستدعاء المدمر صراحة.

كيفية استدعاء المدمر

المدمر هو طريقة فئة خاصة يتم استدعاؤها تلقائيا عند حذف كائن من الذاكرة. هناك عدة طرق لاستدعاء المدمر:

    حذف كائن باستخدام عامل الحذف:

يمكنك حذف كائن بشكل صريح باستخدام عبارة الحذف ، والتي ستؤدي أيضا إلى تشغيل المدمر:

ميكلاس * أوبج = جديد ميكلاس () ؛ / / إنشاء كائن

  • حذف كائن ؛ / / يؤدي حذف كائن بشكل صريح إلى تدمير

حذف مجموعة من الكائنات:

إذا تم إنشاء مصفوفة من الكائنات ، ثم لحذفها ، استخدم عامل الحذف [] ، الذي يستدعي مدمرا لكل عنصر من عناصر المصفوفة:

ميكلاس * آر = جديد ميكلاس [5] ؛ / / إنشاء مجموعة من الكائنات

حذف [] آر ؛ / / يؤدي حذف صفيف إلى تدمير لكل عنصر

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

استدعاء المدمر التلقائي

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

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

تحدث المكالمة التلقائية للمدمر في الحالات التالية:

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

عندما يتم إنشاء كائن كمتغير محلي في كتلة التعليمات البرمجية ، ويتم إنهاء كتلة التعليمات البرمجية. في هذه الحالة ، بعد نهاية كتلة التعليمات البرمجية ، سيتم تحرير الذاكرة التي يشغلها الكائن تلقائيا.

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

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

من المهم أن نفهم أن المدمر ليس منشئا ولا يمكن استدعاؤه مباشرة عند إنشاء كائن. يطلق عليه فقط في لحظة تدمير الكائن.

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

دعوة يدوية من المدمر

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

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

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

ميكلاس * أوبج = جديد ميكلاس ();

// بعض التعليمات البرمجية

  1. حذف الكائن;
  2. الطريقة الثانية هي استدعاء المدمر صراحة باستخدام وظيفة التخلص () في ج#. تستدعي وظيفة التخلص () المدمر وتحرر الموارد المخصصة للكائن. على سبيل المثال:
  3. ميكلاس أوبج = جديد ميكلاس ();

// بعض التعليمات البرمجية

كائن.تخلص();

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

وبالتالي ، يمكن أن تكون المكالمة اليدوية إلى المدمر مفيدة فقط في حالات خاصة عندما تكون مطلوبة صراحة للعمل مع موارد أو مكتبات معينة.

المدمر والاستثناءات

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

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

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

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

في هذا الصدد ، يجب أن تكون حذرا للغاية عند التعامل مع الاستثناءات في المدمرات ، حيث يمكن أن تصبح مصدرا لاستثناءات جديدة وأخطاء يصعب تتبعها. يمكن أن تؤدي الاستثناءات في المدمرات إلى آثار جانبية غير مرغوب فيها عند مسح الذاكرة وتؤدي إلى سلوك برنامج غير صحيح.