التحميل الزائد للوظيفة في C++
في كتابة التعليمات البرمجية الفعلية، في بعض الأحيان قد تقوم نفس الوظيفة الوظيفية بمعالجة أنواع مختلفة من الكائنات، لذلك تحتاج الوظيفة إلى إعادة تنفيذها، الأمر الذي سيجعل التعليمات البرمجية أكثر تعقيدًا. من أجل حل هذه المشكلة، يدعم C++ التحميل الزائد للوظيفة لحل هذه المشكلة .
على سبيل المثال، بالنسبة لمسألة المجموع الحسابي، تحتاج إلى تخصيص دالة لتلقي البيانات الواردة وتلخيصها، ولكن كوحدة مستقلة، كيف يمكنك معرفة نوع البيانات التي مررها المتصل؟ قد تكون بيانات صحيحة، بالطبع قد تكون بيانات من نوع الفاصلة العائمة، أو قد تكون عددًا صحيحًا ونوع الفاصلة العائمة (لم يُعرف بعد أيهما من النوع الصحيح وأيهما من النوع العائم)، و النهج الشامل هو استخدام مختلف كل نوع من وظائف المعلمات الرسمية يجب أن يكون له وظيفة واحدة محددة، أي نوعان من نوع int، نوعان مزدوجان، الأول int والثاني مزدوج، والأول مزدوج والثاني int يحدد أربع وظائف للتنفيذ، على سبيل المثال، الأسماء هي: Add_double_double()، Add_int_double()، Add_int_int()، Add_double_int()، وما إلى ذلك. ألا يبدو هذا مربكًا؟
بعد ذلك، فإن ظهور التحميل الزائد للوظيفة في لغة C++ يحل هذه المشكلة بشكل جيد للغاية. التحميل الزائد للوظيفة هو وظيفتان أو أكثر بنفس اسم الوظيفة ولكن أنواع أو أرقام معلمات مختلفة، بناءً على نوع المعلمات وعددها، يتم تحديد الوظيفة الأكثر ملاءمة تلقائيًا للمكالمات الملزمة، ويتم تنفيذ الاختيار تلقائيًا.
على سبيل المثال، في مثال الإضافة الآن:
#include<iostream>usingnamespacestd;intadd(inta,intb){cout<<(int,int)t;returna+b;}doubleadd(doublea,doubleb){cout<<(doble,double)t;returna+ b ;}doubleadd(doublea,intb){cout<<(double,int)t;returna+b;}doubleadd(inta,doubleb){cout<<(int,double)t;returna+b;}intmain ( ){cout<<add(2,3)<<endl;cout<<add(2.9,15.3)<<endl;cout<<add(10,9.9)<<endl;cout<<add(11.5,5 ) <<endl;return0;}
نتائج التشغيل هي كما يلي:
يرجى قراءة الكود بعناية للتأكد من الوظيفة التي تم تنفيذها، نضيف بيان إخراج cout داخل الوظيفة لتمييز الوظيفة التي يتم استدعاؤها.
يجب على الجميع التجربة بنفسك لفهم الكود!