Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

C++أخطاء قد تظهر بسبب وضع قيم إفتراضية للباراميترات

في جميع الأمثلة, سنفترض أننا نريد تعريف دالة و في كل مرة نحاول تمرير قيم إفتراضية لبعض عناصرها.


المثال الأول

في المثال التالي قمنا بإعطاء c قيمة إفتراضية و هذا لن يسبب مشكلة لأنه لا يوجد بعده أي باراميتر.

void printMax(int a, int b, int c=0)
{
}
void printMax(int a, int b, int c=0) { }


المثال الثاني

المثال التالي فيه مشكلة حيث أننا قمنا بإعطاء b قيمة إفتراضية و لم نعطي قيمة إفتراضية للباراميتر c الموجود بعده.
هذا الأمر سيؤدي لظهور مشكلة عند تشغيل الكود.

void printMax(int a, int b=0, int c)
{
}
void printMax(int a, int b=0, int c) { }

هذه الدالة ستسبب الخطأ التالي في الكود و الذي يعني أن المشكلة هي نسيان وضع قيمة إفتراضية للباراميتر الثالث.

error: default argument missing for parameter 3 of 'void printMax(int, int, int)'


المثال الثالث

في المثال التالي قمنا بإعطاء b و c قيم إفتراضية و هذا لن يسبب مشكلة لأنه لا يوجد بعدهما أي باراميتر.

void printMax(int a, int b=0, int c=0)
{
}
void printMax(int a, int b=0, int c=0) { }


المثال الرابع

المثال التالي فيه مشكلة حيث أننا قمنا بإعطاء a قمية إفتراضية و لم نعطي قيمة إفتراضية للباراميترين b و c الموجودين بعده.
هذا الأمر سيؤدي لظهور مشكلة عند تشغيل الكود.

void printMax(int a=0, int b, int c)
{
}
void printMax(int a=0, int b, int c) { }

هذه الدالة ستسبب الخطأ التالي في الكود و الذي يعني أن المشكلة هي نسيان وضع قيمة إفتراضية للباراميترين الثاني و الثالث.

error: default argument missing for parameter 2 of 'void printMax(int, int, int)'
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)
{
}
void printMax(int a=0, int b=0, int c=0) { }