تجول C ++

C ++ الصفحة الرئيسية C ++ مقدمة C ++ ابدأ بناء جملة C ++ إخراج C ++ تعليقات C ++ متغيرات C ++ مدخلات مستخدم C ++ أنواع بيانات C ++ عوامل C ++ سلاسل C ++ C ++ الرياضيات C ++ منطقية شروط C ++ مفتاح C ++ C ++ أثناء التكرار C ++ للحلقة C ++ استراحة / متابعة صفائف C ++ مراجع C ++ مؤشرات C ++

وظائف C ++

وظائف C ++ معلمات وظيفة C ++ وظيفة C ++ الزائد

فئات C ++

C ++ OOP فئات / كائنات C ++ طرق فئة C ++ C ++ البناة محددات الوصول C ++ تغليف C ++ الوراثة C ++ تعدد الأشكال C ++ ملفات C ++ استثناءات C ++

C ++ كيف

أضف عددين

أمثلة C ++

أمثلة C ++ مترجم C ++ تمارين C ++ اختبار C ++


محددات الوصول C ++


محددات الوصول

الآن ، أنت على دراية publicبالكلمة الرئيسية التي تظهر في جميع أمثلة فصولنا الدراسية:

مثال

class MyClass {  // The class
  public:        // Access specifier
    // class members goes here
};

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

ومع ذلك ، ماذا لو أردنا أن يكون الأعضاء خاصين ومخفيين عن العالم الخارجي؟

في C ++ ، هناك ثلاثة محددات وصول:

  • public- يمكن الوصول إلى الأعضاء من خارج الفصل
  • private- لا يمكن الوصول إلى الأعضاء (أو عرضها) من خارج الفصل
  • protected- لا يمكن الوصول إلى الأعضاء من خارج الفصل ، ومع ذلك ، يمكن الوصول إليهم في الفئات الموروثة. سوف تتعلم المزيد عن الميراث لاحقًا.

في المثال التالي ، نوضح الاختلافات بين الأعضاء publicوالأعضاء private:

مثال

class MyClass {
  public:    // Public access specifier
    int x;   // Public attribute
  private:   // Private access specifier
    int y;   // Private attribute
};

int main() {
  MyClass myObj;
  myObj.x = 25;  // Allowed (public)
  myObj.y = 50;  // Not allowed (private)
  return 0;
}

إذا حاولت الوصول إلى عضو خاص ، سيحدث خطأ:

error: y is private

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

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

ملاحظة: بشكل افتراضي ، يكون جميع أعضاء الفصل الدراسي في privateحالة عدم تحديد محدد وصول:

مثال

class MyClass {
  int x;   // Private attribute
  int y;   // Private attribute
};