في البرمجة، يشير مؤشر "هذا" إلى مثيل الكائن الحالي داخل وظيفة العضو. يسمح للوظيفة بالوصول إلى بيانات الكائن وأساليبه. ومع ذلك، هناك سؤال: هل من المنطقي التحقق مما إذا كان "هذا" فارغًا؟
دعونا نفكر في طريقة تؤدي مهمة داخل فئة:
class MyClass {
public:
int myFunction() {
if (this == nullptr) {
return -1; // Error code
}
...
}
};
السؤال هو ما إذا كان هذا التحقق من القيمة الفارغة ضروريًا أو حتى صالحًا.
وفقًا لمعيار C، فإن أي استدعاء على مؤشر فارغ يعد سلوكًا غير محدد. وهذا يعني أنه إذا كان المؤشر "هذا" فارغًا، فإن استدعاء الأسلوب غير صالح ولا يمكن التنبؤ بسلوك البرنامج. لذلك، في لغة C القياسية، التحقق مما إذا كان "هذا" فارغًا ليس أمرًا معقولاً.
ومع ذلك، تسمح بعض التطبيقات باستخدام "هذا == 0" للوظائف غير الافتراضية. ونتيجة لذلك، قد تعتمد المكتبات المكتوبة خصيصًا لهذه التطبيقات على هذا الاختراق.
في بعض الحالات، يمكن إضافة التحقق من القيمة الفارغة كوسيلة مساعدة لتصحيح الأخطاء لالتقاط المثيلات التي يكون فيها المؤشر "هذا" فارغًا بشكل غير متوقع بسبب خطأ المتصل. ومع ذلك، فإن الطريقة المفضلة لتصحيح مثل هذه المشكلات هي استخدام التأكيدات.
بالإضافة إلى ذلك، من المهم ملاحظة أن التحقق مما إذا كان "هذا" فارغًا لا يعني بالضرورة أنه تم حذف الكائن. إنه يشير فقط إلى أنه تم إجراء استدعاء الأسلوب على مؤشر فارغ أو مرجع تم الحصول عليه من مؤشر فارغ، وهو سلوك غير صحيح بطبيعته في لغة C .
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3