جدول المحتويات:
- الأمر C ++ غوتو
- مشغل ثلاثي C ++
- تعداد أنواع في C ++
- مساحات أسماء C ++
- وظائف افتراضية نقية في C ++
- فئة سلسلة C ++
- وراثة متعددة في C ++
- C ++ تمبلاتس أند ستاندارد تمبلات ليبراري
فيديو: Kurs C++ odc. 8: Łańcuchy. Typ string. Tablice char. Tabela ASCII 2025
تحتوي لغة C ++ على العديد من الميزات التي لا يمكن للمبرمجين البدء فهمها لكل واحد منهم. لحسن الحظ، لا تحتاج لإتقان جميع ملامح اللغة من أجل كتابة كبيرة، برامج العالم الحقيقي. وفيما يلي عشر ميزات التي قد ترغب في النظر إلى الأمام، فقط في حال كنت ترى لهم في برامج الآخرين.
الأمر C ++ غوتو
هذا الأمر يذهب على طول الطريق إلى C، السلف من C ++. من حيث المبدأ، استخدام هذا الأمر هو سهل. يمكنك وضع غوتو التسمية. في أي مكان تريد. عندما يأتي C ++ عبر هذا الأمر، يمر عنصر التحكم مباشرة إلى الملصق، كما هو موضح في مقتطف الشفرة هذا:
فور (؛؛) {إف (كونديتيونال إكسبريسيون) {غوتو أوتاهير؛} // … ماي وانت يو وانت …} أوتاهير: // … بروغرام كونتينو هير …
غوتو يقدم الكثير من الطرق المسمار. على أية حال، لم يستغرق الأمر وقتا طويلا قبل أن يلاحظ المبرمجون أن الاستخدامين الأكثر شيوعا ل غوتو كان الخروج من الحلقات والذهاب إلى الحالة التالية داخل حلقة. قدمت لجنة المعايير C استراحة وتستمر وتزيل تماما تقريبا الحاجة إلى الأمر غوتو.
مشغل ثلاثي C ++
مشغل ثلاثي هو عامل فريد من نوعه ل C و C ++. وهي تعمل على النحو التالي:
إنت n = (شرطي)؟ التعبير 1: التعبير 2؛
و؟ المشغل أولا يقيم الشرطي. إذا كان الشرط صحيحا، فإن قيمة التعبير تساوي قيمة التعبير 1؛ وإلا فإنه يساوي قيمة التعبير 2.
على سبيل المثال، يمكنك تنفيذ دالة كحد أقصى () كما يلي:
إنت ماكس (إنت n1، إنت n2) {ريتورن (n1> n2)؟ n1: n2؛}
يمكن تطبيق المشغل الثلاثي على أي نوع من الأرقام ولكن لا يمكن تحميله بشكل زائد. المشغل الثلاثي هو حقا تعبير - وليس بيان التحكم مثل إذا.
تعداد أنواع في C ++
فكرة بسيطة هي أنه يمكنك تحديد الثوابت والسماح C ++ تعيين قيم لهم، كما هو موضح هنا:
إنوم الألوان {أسود، أزرق، أخضر، أصفر، أحمر}؛ الألوان ميكولور = أسود؛
المشكلة مع أنواع تعداد يكمن في التنفيذ: بدلا من إنشاء نوع صحيح، يستخدم C ++ الأعداد الصحيحة. في هذه الحالة، يتم تعيين بلاك القيمة 0، يتم تعيين بلو 1، GREEN2 وهكذا.
>المكتبة القياسية ل C ++ "الثابتة" هذه المشكلة عن طريق إنشاء نوع فئة تعداد كما هو موضح في المقتطف التالي:
الطبقة الطبقة إنوم {الأسود والأزرق والأخضر والأصفر والأحمر}. الألوان ميكولور = الألوان:: أسود؛
في هذا الإصدار، الألوان هو نوع جديد.كل من الثوابت، الأسود، الأزرق، وهلم جرا، وأعضاء من نوع الألوان. لا يزال بإمكانك إرسال كائن من ألوان الفئة إلى إنت، ولكن لا يسمح بالإرسال الضمني.
مساحات أسماء C ++
من الممكن إعطاء كيانات مختلفة في مكتبتين مختلفتين تحمل نفس الاسم. على سبيل المثال، الدالة () في مكتبة الطالب ربما تعين درجة، في حين أن الدالة () في مكتبة سيفيلنجينيرينغ قد تحدد المنحدر على جانب تلة. لتجنب هذه المشكلة، يسمح C ++ للمبرمج بوضع التعليمات البرمجية في مساحة اسم منفصلة. وبالتالي فإن الصف داخل مساحة اسم الطالب يختلف عن الصف داخل سيفيلنجينيرينغ.
مساحة الاسم أعلى من اسم الفئة. الدالة عضو () عضو من فئة بولدوزر في سيفيلنجينيرينغ نامسسباس له اسم موسع سيفيلنجينيرينغ:: بولدوزر:: الصف ().
كافة عناصر المكتبة ووظائفها في مساحة الاسم ستد. البيان في بداية قالب البرنامج باستخدام مساحة الاسم ستد؛ يقول أنه إذا كنت لا ترى الكائن المحدد في مساحة الاسم الافتراضية، ثم انتقل نظرة في ستد.
وظائف افتراضية نقية في C ++
ليس لديك لتحديد وظيفة افتراضية المعلنة. تعرف هذه الدالة غير المعرفة باسم وظيفة العضو الظاهري النقي . ولكن في هذه المرحلة، تصبح الأمور معقدة. على سبيل المثال، فئة مع واحد أو أكثر من وظائف افتراضية نقية أن تكون مجردة ولا يمكن استخدامها لإنشاء كائن. معالجة هذا الموضوع بعد أن تشعر بالراحة مع وظائف افتراضية والترابط في وقت متأخر.
فئة سلسلة C ++
تتضمن معظم اللغات فئة سلسلة كنوع جوهري للتعامل مع سلاسل الحروف بسهولة. من الناحية النظرية، فئة السلسلة يجب أن تفعل الشيء نفسه ل C ++. ومع ذلك، في الممارسة العملية، ليست بهذه البساطة. لأن السلسلة ليست نوع جوهري، رسائل الخطأ التي ينشئها المحول البرمجي عندما يحدث خطأ ما هي أشبه بتلك المرتبطة بالفئات المعرفة من قبل المستخدم. بالنسبة للمبتدئين، يمكن أن يكون من الصعب جدا تفسير هذه الرسائل.
السلسلة ليست حتى فئة. انها مثال من فئة القالب. رسائل الخطأ يمكن أن يكون لالتقاط الأنفاس.
وراثة متعددة في C ++
يمكن أن فئة واحدة في الواقع تمتد أكثر من فئة قاعدة واحدة. هذا يبدو بسيطا ولكن يمكن أن يكون معقدا جدا عندما تحتوي الفئتين الأساسيتين على وظائف الأعضاء بنفس الاسم. والأسوأ من ذلك هو عندما يكون كل من الطبقات الأساسية هي نفسها فئات فرعية من بعض الطبقة المشتركة.
في الواقع، الكثير من المشاكل تنشأ أن C ++ هي لغة C-ليك الوحيدة التي تدعم تعدد الميراث. جافا و C #، كل من اللغات المستمدة من C ++، قررت إسقاط الدعم لعدة ميراث.
C ++ تمبلاتس أند ستاندارد تمبلات ليبراري
لاحظ واضعو C ++ كيف أن وظائف مشابهة مثل ما يلي:
إنت ماكس (إنت n1، إنت n2) {إف (n1> n2) {ريتورن n1؛} ريتورن n2؛} دوبل ماكس (دوبل n1، دوبل n2) {إف (n1> n2) {ريتورن n1؛} ريتورن n2؛} شار ماكس (شار n1، شار n2) {إف (n1> n2) {ريتورن n1؛} ريتورن n2؛}
"لن يكون الأمر باردا"، يقول أحدهم لآخر، "إذا استطعت استبدال النوع ب T من النوع الزائف الذي يمكنك تعريفه في وقت الترجمة؟"قبل أن تعرف ذلك، بريستو - قوالب تصبح جزءا من C ++:
القالب T ماكس (T t1، T t2) {إف (t1> t2) {ريتورن t1؛} ريتورن t2؛}
الآن يمكن للمبرمج إنشاء ماكس (إنت، إنت) عن طريق استبدال T مع إنت وتجميع النتيجة، وخلق ماكس (مزدوجة، مزدوجة) عن طريق استبدال T مع ضعف، وهكذا دواليك. حتى أصدرت لجنة المعايير مكتبة كاملة من الطبقات، والمعروفة باسم مكتبة قالب قياسي (المحكمة الخاصة بلبنان لفترة قصيرة)، استنادا إلى فئات القالب.
بالنسبة للمبتدئين، ومع ذلك، فإن موضوع فصول القوالب يبدأ في الحصول على بنية معقدة للغاية. بالإضافة إلى ذلك، الأخطاء التي يولدها المترجم عندما تحصل على قالب إنستياتيون خاطئ محيرة لخبير، لا يهم مبتدئا. هذا هو بالتأكيد الموضوع الذي يحتاج إلى الانتظار حتى تشعر بالراحة مع اللغة الأساسية.