C++أخطاء قد تظهر بسبب وضع قيم إفتراضية للباراميترات
في جميع الأمثلة, سنفترض أننا نريد تعريف دالة و في كل مرة نحاول تمرير قيم إفتراضية لبعض عناصرها.
المثال الأول
في المثال التالي قمنا بإعطاء c
قيمة إفتراضية و هذا لن يسبب مشكلة لأنه لا يوجد بعده أي باراميتر.
void printMax(int a, int b, int c=0)
{
}
المثال الثاني
المثال التالي فيه مشكلة حيث أننا قمنا بإعطاء b
قيمة إفتراضية و لم نعطي قيمة إفتراضية للباراميتر c
الموجود بعده.
هذا الأمر سيؤدي لظهور مشكلة عند تشغيل الكود.
void printMax(int a, int b=0, int c)
{
}
هذه الدالة ستسبب الخطأ التالي في الكود و الذي يعني أن المشكلة هي نسيان وضع قيمة إفتراضية للباراميتر الثالث.
المثال الثالث
في المثال التالي قمنا بإعطاء b
و c
قيم إفتراضية و هذا لن يسبب مشكلة لأنه لا يوجد بعدهما أي باراميتر.
void printMax(int a, int b=0, int c=0)
{
}
المثال الرابع
المثال التالي فيه مشكلة حيث أننا قمنا بإعطاء a
قمية إفتراضية و لم نعطي قيمة إفتراضية للباراميترين b
و c
الموجودين بعده.
هذا الأمر سيؤدي لظهور مشكلة عند تشغيل الكود.
void printMax(int a=0, int b, int c)
{
}
هذه الدالة ستسبب الخطأ التالي في الكود و الذي يعني أن المشكلة هي نسيان وضع قيمة إفتراضية للباراميترين الثاني و الثالث.
error: default argument missing for parameter 3 of 'void printMax(int, int, int)'
المثال الخامس
في المثال التالي قمنا بإعطاء a
و b
و c
قيم إفتراضية, أي كل البارميترات و بالتالي لا يوجد أي مشكلة هنا.
void printMax(int a=0, int b=0, int c=0)
{
}