English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يُسمح في نفس النطاق بتوليدوظائفوعملياتتُحدد عدة تعريفات، ويُسمى كل منهاتعديل الوظائفوتعديل العمليات.
التعريف المعدل هو إعلان وظيفة أو طريقة تحتوي على نفس الاسم مثل الوظيفة أو الطريقة التي تم إعلانها مسبقًا في نفس النطاق ولكن يجب أن تكون قائمة المتغيرات الخاصة بها و التعريف (التنفيذ) مختلفة.
عندما تُدعىتعديل الوظائفأوتعديل العملياتعندما يقرر معالج البرمجة استخدام نوع المتغيرات التي تستخدمها مقارنةً بنوع المتغيرات المحددة في التعريف، يتم اختيار التعريف المناسب. عملية اختيار التعريف أو العمليات المعدلة الأنسب يُسمىقرار التعديل.
في نفس النطاق، يمكن إعلان عدة وظائف تحمل نفس الاسم ولكن يجب أن تكون شكل متغيراتها (العدد، النوع أو الترتيب) مختلفة. لا يمكنك تعريف وظيفة بتعديل نوع العودة فقط.
في المثال التالي، الوظائف التي تحمل نفس الاسم print() تُستخدم لتحديد أنواع البيانات المختلفة:
#include <iostream> using namespace std; class printData { public: void print(int i) cout << "العدد الصحيح هو: " << i << endl; } void print(double f) cout << "العدد العشري هو: " << f << endl; } void print(char c[]) cout << "السلسلة هي: " << c << endl; } }; int main(void) { printData pd; // إخراج العدد الصحيح pd.print(5); // إخراج العدد العشري pd.print(500.263); // إخراج السلسلة char c[] = "Hello C++"; pd.print(c); return 0; }
عندما يتم تجميع وكشف الكود أعلاه، سيكون هناك النتيجة التالية:
العدد الصحيح هو: 5 العدد العشري هو: 500.263 السلسلة هي: Hello C++
يمكنك تعريف أو تعديل معظم عمليات C++ المدمجة. بهذا الشكل، يمكنك استخدام عمليات مخصصة للأنواع المخصصة.
المؤشرات الحسابية المعدلة هي وظائف تحتوي على أسماء خاصة، ويكون اسم الوظيفة مكونًا من كلمة المفتاح operator ورمز العمليات التي يتم تعديلها.
Box operator+(const Box&);
إعلان عملاً حسابيًا用于 جمع عناصر Box الاثنين، وإرجاع عنصر Box النهائي. يمكن تعريف معظم العمليات المعدلة كفونكشن غير عضوية أو كفونكشن عضوية. إذا تم تعريف الوظيفة أعلاه كفونكشن غير عضوية، فإنه يتعين على نقل إثنين من المعاملات لكل عملية، مثلما يلي:
Box operator+(const Box&, const Box&);
في المثال التالي، يستخدم الف�数ل العضوية لشرح مفهوم تعديل العمليات. هنا، يتم نقل العنصر كمعامل، ويتم الوصول إلى خصائص العنصر باستخدام هذا باستخدام علامة الحساب، مثلما يلي:
#include <iostream> using namespace std; class Box { public: double getVolume(void) { return length * breadth * height; } void setLength( double len ) { length = len; } void setBreadth( double bre ) { breadth = bre; } void setHeight( double hei ) { height = hei; } // 重载 + 运算符,用于把两个 Box 对象相加 Box operator+(const Box& b) { Box box; box.length = this->length + b.length; box.breadth = this->breadth + b.breadth; box.height = this->height + b.height; return box; } private: double length; // 长度 double breadth; // 宽度 double height; // 高度 }; // 程序的主函数 int main( ) { Box Box1; // 声明 Box1,类型为 Box Box Box2; // 声明 Box2,类型为 Box Box Box3; // 声明 Box3,类型为 Box double volume = 0.0; // حفظ حجم في هذا المتغير // تفاصيل Box1 Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // تفاصيل Box2 Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); // حجم Box1 volume = Box1.getVolume(); cout << "حجم Box1: " << volume << endl; // حجم Box2 volume = Box2.getVolume(); cout << "حجم Box2: " << volume << endl; // إضافة الأثنين من الأجسام للحصول على Box3 Box3 = Box1 + Box2; // حجم Box3 volume = Box3.getVolume(); cout << "حجم Box3: " << volume << endl; return 0; }
عندما يتم تجميع وكشف الكود أعلاه، سيكون هناك النتيجة التالية:
حجم Box1: 210 حجم Box2: 1560 حجم Box3: 5400
هذه قائمة العمليات القابلة للتشغيل مرة أخرى:
عمليات الحساب الثنائي | + (إضافة)،-(طرح)،*(ضرب)،/(تقسيم)،%(متبقي) |
عمليات العلاقات | == (يساوي)،!= (ليس يساوي)،< (أقل من)،> (أكبر من)،<= (أقل أو يساوي)،>= (أكبر أو يساوي) |
عمليات منطقية | ||(أو منطقي)،&&(وجود)،!(لا) |
عمليات الأحادي | + (إيجابي)،-(سالب)،*(مؤشر)،&(استنساخ) |
عمليات الزيادة والانخفاض | ++(زيادة)،--(انخفاض) |
عمليات الحساب الثنائي | | (أو بتقدير)،& (و)،~(استنساخ)،^(مختلف)،<< (تحريك إلى اليسار)،>>(تحريك إلى اليمين) |
عمليات التخصيص | =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= |
طلب وتحرير المساحة | new, delete, new[], delete[] |
عمليات أخرى | (دعوة دالة)،->(وصول إلى العضو)،,(فاصلة)،[](مؤشر) |
قائمة العمليات غير القابلة للتشغيل مرة أخرى:
تقدمت لكم أدناه أمثلة على تغليظ عمليات المبرمجة، مما يساعدكم على فهم مفهوم التغليظ بشكل أفضل.