الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]سؤال:التحميل الزائد overloding

بدأه حاسوبيه مبتدئه في 17 نوفمبر 2013 · 1 رد · 808 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف حالكم ؟؟ يارب بأحسن حال

عندي شرح للتحميل الزائد وجمعت عدد من المعلومات

 وحابه تزيدونها لي ^_^

 ابي احد يوضح لي هالكود يعني ابي توضحون لي كل سطر

وكيفية عمل التحميل الزائد  

وفوائد التحميل الزائد غير انه يبسط البرنامج ويسمح لي باستخدام اسم الداله اكثر من مره

اكون لكم شاكره ..

هذا كود البرنامج :

include <iostream>
using std::cout;
using std::endl;
          
int square(int y)                         
{                                           
   cout << "square of integer " << y << " is ";
   return y * y;                            
} 
      
double square(double z)                   
{                                           
   cout << "square of double " << z << " is ";
   return z * z;                            
 }  

int main()
 {
   cout << square( 5 ); // calls int version
   cout << endl;
   cout << square( 3.5 ); // calls double version
  cout << endl; 
return 0;


{

 

وفقكم المولى ويسر لكم اموركم"

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 17 نوفمبر 2013 في 21:42 — السبب: التنسيق

#2

السلام عليكم

 

 

بداية, أعتقد أن ترجمة الـ overloading أقرب إلى إعادة التعريف من التحميل الزائد.

إعادة تعريف الدوال في سي++ تعني وجود دالة بنفس الاسم لكن بوسائط مختلفة النوع أو العدد, أكثر من مرة.

في لغة C, يعتمد الـ compiler في تفرقة الدوال عن بعضها البعض, على الاسم و على الاسم فقط ! و بالتالي لا يمكن وجود أكثر من دالة بنفس الاسم لذا تم إيجاد مفهوم الـ overloading كحل بديل. في CPP يعتمد الـ compiler على الاسم و الوسائط معاً حيث يُمكن أن نجد دالتين بنفس الاسم لكن بوسائط مختلفة.

يُشكل كل من اسم و وسائط الدالة ما يُعرف بـ signature.

كمثال بسيط, يُمكننا كتابة دالة تقوم بجمع عددين صحيحين و نُعيد تعريفها من جديد لنتمكن من جميع عددين حقيقيين. مثال :

int somme(int nb1, int nb2)
{
    return nb1 + nb2;
}

double somme(double nb1, double nb2)
{
    return nb1 + nb2;
}

هاتان الدالتان تملكان نفس الاسم و signature مختلف لذا يمكننا القول أنه تمت إعادة تعريف الدالة somme.

الآن, يمكننا استدعاء الدالة somme لجمع عددين و المترجم سيتولى تحديد أي الدالتين يجب استخدامها :

#include <iostream>

using namespace std;


int somme(int nb1, int nb2);
double somme(double nb1, double nb2);

int main()
{
    cout << somme(10, 15) << endl << somme(2.5, 0.3) << endl;

    return 0;
}

int somme(int nb1, int nb2)
{
    return nb1 + nb2;
}

double somme(double nb1, double nb2)
{
    return nb1 + nb2;
}

نفس الكلام السابق, يمكنك تطبيقه على الكود الخاص بك :)

 

 

 

تحياتي.

تم تعديل هذه المشاركة بواسطة Snack3r في 18 نوفمبر 2013 في 01:19

مواضيع مشابهة