English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
具有相同名称但参数不同的两个或多个函数称为重载函数。在本文中,您将通过示例了解函数重载。
函数是指将代码分组以执行特定任务的代码片段。
在C ++编程中,如果传递的参数的个数或类型不同,则两个函数可以具有相同的名称。
具有不同参数个数或类型(或两者兼有)参数的函数称为重载函数。例如:
int test() { } int test(int a) {} float test(double a) { } int test(int a, double b) {}
في هذا المثال، جميع أربع الدوال هي دوال مضادة لأن معلماتها المرسلة مختلفة.
لاحظ أن أنواع العودة لأربع هذه الدوال ليست متطابقة. يمكن أن يكون لديها أو لا يكون لديها أنواع عودة مختلفة، ولكن يجب أن يكون لديها معلمات مختلفة.
// كود خاطئ int test(int a) {} double test(int b){}
بالرغم من أن أنواع العودة للدوال مختلفة، إلا أن عدد المعلمات وأنواعها التي يتم إرسالها لهذه الدوال متطابقة. لذلك، سيقوم المترجم بإلقاء خطأ.
#include <iostream> using namespace std; void display(int); void display(float); void display(int, float); int main() { int a = 5; float b = 5.5; display(a); display(b); display(a, b); return 0; {} void display(int var) { cout << "عدد صحيح: " << var << endl; {} void display(float var) { cout << "عدد معقد: " << var << endl; {} void display(int var1, float var2) { cout << "عدد صحيح: " << var1; cout << " " << "وعدد معقد: " << var2; {}
نتيجة الإخراج
عدد صحيح: 5 عدد معقد: 5.5 عدد صحيح: 5 وعدد معقد: 5.5
في هذا المثال، تم استدعاء دالة display() ثلاث مرات باستخدام أنواع أو أعداد مختلفة من المعلمات.
كل هذه الدوال لها نفس نوع العودة، ولكن هذا ليس ضرورياً.
// يحسب البرنامج القيمة الإسقاط المطلق // فعال لكل من الأعداد الصحيحة والمعقودة #include <iostream> using namespace std; int absolute(int); float absolute(float); int main() { int a = -5; float b = 5.5; cout << "عدد " << a << " " << "الإسقاط المطلق = " << absolute(a) << endl; cout << "عدد " << b << " " << "الإسقاط المطلق = " << absolute(b); return 0; {} int absolute(int var) { if (var < 0) var = -var; return var; {} float absolute(float var) { if (var < 0.0) var = -var; return var; {}
نتيجة الإخراج
قيمة الإسقاط المطلق للعدد -5 تساوي 5 قيمة الإسقاط المطلق للعدد 5.5 تساوي 5.5
في المثال السابق، تم تعريف كلاً من دالة absolute().
هذه الوظائف تستخدم معاملًا واحدًا فقط. ولكن، واحدة منها تستخدم integer كمعامل، بينما تستخدم الأخرى float كمعامل.
عندما يتم استدعاء وظيفة absolute() باستخدام int كمعامل، يتم استدعاء هذه الوظيفة:
int absolute(int var) { if (var < 0) var = -var; return var; {}
عندما يتم استدعاء وظيفة absolute() باستخدام float كمعامل، يتم استدعاء هذه الوظيفة:
float absolute(float var) { if (var < 0.0) var = -var; return var; {}