ماذا تفعل :: هل في C ++؟

Madha Tf L Hl Fy C



C ++ هي لغة برمجة متعددة الاستخدامات تقدم للمطورين مجموعة واسعة من الوظائف. واحدة من أكثر الميزات شيوعًا في C ++ هي مشغل قرار النطاق ، المعروف أيضًا باسم نقطتان (: :) . على الرغم من كونه جزءًا حيويًا من اللغة ، فإن القولون المزدوج المشغل يمكن أن يكون مربكًا للعديد من المطورين ، لا سيما المبتدئين فيه.

في هذا الدليل ، سنلقي نظرة على ملف نقطتان (: :) عامل في C ++ وكيف يعمل في سيناريوهات مختلفة.

ماذا تفعل :: هل في C ++؟

في C ++ ، فإن ملف قرار النطاق المشغل أو العامل (::) يستخدم لاسترداد أسماء المتغيرات الموجودة في مستويات النطاق المختلفة. يشير النطاق في البرمجة إلى السياق حيث يمكن الوصول إلى المتغيرات والوظائف.







استخدامات :: في حالات مختلفة في C ++

في C ++ ، فإن ملف مشغل دقة النطاق (: :) له استخدامات مختلفة حسب السياق الذي يتم استخدامه فيه. فيما يلي بعض الاستخدامات البارزة لهذا المشغل:



1: الوصول إلى متغير أو وظيفة في مساحة اسم مختلفة

أ مساحة الاسم يستخدم في C ++ لتجميع الوظائف والفئات والمتغيرات ذات الصلة لتجنب تعارض التسمية. عندما تحدد متغيرًا أو وظيفة داخل ملف مساحة الاسم ، المتغير أو اسم الوظيفة مرئي فقط داخل ذلك مساحة الاسم .



في C ++ ، يمكنك استخدام ملحق مشغل دقة النطاق (: :) جنبا إلى جنب مع مساحة الاسم name والمتغير أو اسم الوظيفة للوصول إلى متغير أو دالة محددة في مساحة اسم مختلفة. يتيح لك ذلك الوصول إلى المتغير أو الوظيفة من ملف مساحة الاسم بخلاف الذي تم إنشاؤه فيه.





لفهم الحالة المذكورة أعلاه ، ضع في اعتبارك الكود التالي كمثال:

# تضمين

استخدام اسم للمحطة ؛

حساب مساحة الاسم {

مقدار ثابت مزدوج باي = 3.14159 ؛

مزدوج مربع ( مزدوج x ) {

يعود x * x ؛

}

}

int رئيسي ( ) {

كوت << 'قيمة PI هي:' << الرياضيات :: باي << إندل ؛

كوت << مربع 5 هو: << الرياضيات :: مربع ( 5 ) << إندل ؛

يعود 0 ؛

}

يستخدم الرمز أعلاه مساحة اسم الرياضيات للوصول إلى 'باي' ثابت و 'مربع' تعمل باستخدام مشغل قرار النطاق '::' . ثم يقوم بطباعة القيم إلى وحدة التحكم.



انتاج |

2: الوصول إلى المتغير العالمي في البرنامج

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

على سبيل المثال ، في الكود الوارد أدناه ، أشرنا إلى المتغير العام 'عبر مشغل دقة النطاق (: :) ، من داخل دالة حيث تم تعريف متغير محلي بنفس الاسم:

# تضمين

استخدام اسم للمحطة ؛

int أ = خمسة عشر ؛

int رئيسي ( )

{

int أ = 35 ؛

كوت << 'قيمة المتغير العام أ هي' << :: أ << إندل ؛

كوت << 'قيمة المتغير المحلي أ هي' << أ << إندل ؛

يعود 0 ؛

}

في الكود أعلاه ، المتغير الموجود خارج الوظيفة الرئيسية هو متغير عالمي والمتغير a داخل الوظيفة الرئيسية هو متغير محلي بنفس اسم المتغير العام. في بيان cout ، استخدمنا عامل دقة النطاق لطباعة المتغير العام أ .

انتاج |

3: تحديد وظيفة خارج الفصل الدراسي

في C ++ ، يمكنك تحديد وظيفة فئة خارج تعريف الفئة ويمكن القيام بذلك باستخدام امتداد مشغل دقة النطاق (: :) لتحديد الفئة التي تنتمي إليها الوظيفة. هذا ضروري لأن الوظيفة معرّفة خارج نطاق الصنف.

فيما يلي مثال على رمز يوضح هذا الاستخدام لملف مشغل قرار النطاق :

# تضمين

استخدام اسم للمحطة ؛



فئة myClass {

عام :

فارغ وظيفتي ( ) ؛

} ؛

فارغ صفي :: وظيفتي ( ) {

كوت << 'myfunction () استدعاء!' ؛

}

int رئيسي ( )

{

myClass classObj ؛

classObj. وظيفتي ( ) ؛

يعود 0 ؛

}

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

انتاج |

4: الوصول إلى أعضاء ثابتة من الفصل

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

فيما يلي مثال على رمز يتعلق باستخدام مشغل قرار النطاق لمثل هذه الحالة:

# تضمين

استخدام اسم للمحطة ؛

فئة myClass {

عام :

ثابتة int myStatVar ؛

} ؛

int صفي :: myStatVar = 5 ؛

int رئيسي ( ) {

int myStatVar = 10 ؛

كوت << 'المتغير المحلي myStatVar:' << myStatVar << إندل ؛

كوت << 'متغير الفئة myStatVar:' << صفي :: myStatVar << إندل ؛

يعود 0 ؛

}

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

انتاج |

5: استخدام مع تعدد الميراث

ال مشغل دقة النطاق (: :) يستخدم أيضًا للإشارة إلى إصدار العضو الذي سيتم استخدامه عند اشتقاق فئة C ++ من فئات رئيسية متعددة لها متغيرات عضو أو وظائف بنفس الاسم. يمكننا التمييز بين الإصدارات المختلفة لنفس العضو باستخدام مشغل قرار النطاق متبوعًا باسم الفئة الأصل واسم العضو.

# تضمين

استخدام اسم للمحطة ؛

فئة Parent1 {

عام :

فارغ مطبعة ( ) {

كوت << 'هذه هي وظيفة طباعة فئة Parent1.' << إندل ؛

}

} ؛

فئة Parent2 {
عام :
فارغ مطبعة ( ) {
كوت << 'هذه وظيفة طباعة من فئة Parent2.' << إندل ؛
}
} ؛
فئة myClass : الوالد العام 1 و الوالد العام 2 {
خاص :
int على واحد ؛

عام :
صفي ( int ن ) {
على واحد = ن ؛
}
فارغ مطبعة ( ) {
الوالد 1 :: مطبعة ( ) ؛ // استدعاء وظيفة طباعة Parent1
الوالد 2 :: مطبعة ( ) ؛ // استدعاء وظيفة طباعة Parent2
كوت << 'قيمة الأسطوانات هي:' << على واحد << إندل ؛ // طباعة قيمة الأسطوانات
}
} ؛
int رئيسي ( ) {
كائن myClass ( 42 ) ؛ // إنشاء كائن من MyClass مع تهيئة num إلى 42
الهدف. مطبعة ( ) ؛ // استدعاء وظيفة print () للكائن
يعود 0 ؛
}

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

انتاج |

الحد الأدنى

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