"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما هو الفرق في نوع المؤشر "هذا" بين وظائف الأعضاء غير الثابتة والعضوية؟

ما هو الفرق في نوع المؤشر "هذا" بين وظائف الأعضاء غير الثابتة والعضوية؟

تم النشر بتاريخ 2024-11-15
تصفح:266

What is the Difference in the 'this' Pointer Type Between Non-Const and Const Member Functions?

فهم نوع المؤشر "هذا"

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

في وظيفة عضو غير ثابت، يحتوي "هذا" على النوع "ClassName *،" حيث ClassName هو اسم الفئة. يسمح هذا لوظيفة العضو بتعديل بيانات الكائن. على سبيل المثال، يُظهر التعليمة البرمجية التالية دالة عضو غير ثابتة تقوم بتعديل اسم الكائن:

class Person {
    string name;
    void SetName(string newName) {
        name = newName;
    }
};

في دالة العضو const، يحتوي 'this' على النوع "const ClassName *." يشير هذا إلى أن القيمة التي يشير إليها المؤشر ثابتة، أي أنه لا يمكن تعديلها. لا يزال بإمكان وظيفة العضو الوصول إلى بيانات الكائن، لكن لا يمكنها تعديلها. إليك مثال:

class Person {
    string name;
    void GetName() const {
        cout 

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

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3