English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية C++ الأساسية

C++ 流程控制

functions في C++

C++ 数组 & 字符串

C++ 数据结构

C++ 类 & 对象

المراجع في C++

التنسيق في C++

تعليمية STL C++

دليل مرجعي لـ C++

قيم الافتراضية في C++ (مفارقات)

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

في برمجة C++، يمكنك تقديموظيفةقيم المعلمات الافتراضية.

الفكرة وراء القيم الافتراضية بسيطة. إذا تم استدعاء الوظيفة عن طريق تقديم معلمات، يتم استخدام هذه المعلمات بواسطة الوظيفة.

لكن إذا لم يتم تقديم معلمات عند استدعاء الوظيفة، يتم استخدام القيم الافتراضية.

تُنقل القيم الافتراضية إلى معلمات النموذج الوظيفي.

عمل القيم الافتراضية

مثال: القيم الافتراضية

//برنامج c++ يوضح كيفية عمل القيم الافتراضية
#include <iostream>
using namespace std;
void display(char = '*', int = 1);
int main()
{
    cout << "\nلم يتم تقديم أي معلمات:\n";
    display();
    
    cout << "\nتم تقديم المعلمة الأولى:\n";
    display('#');
    
    cout << "\nتم تقديم إثنين من المعلمات:\n";
    display('$', 5);
    return 0;
}
void display(char c, int n)
{
    for(int i = 1; i <= n; ++i)
    {
        cout << c;
    }
    cout << endl;
}

نتيجة الإخراج

لم يتم تقديم أي معلمات:
*
تم تقديم المعلمة الأولى:
#
تم تقديم إثنين من المعلمات:
$$$$$

في البرنامج أعلاه، يمكنك رؤية تخصيص القيم الافتراضية للمعلمات void display(char = '*', int = 1);.

أولاً، يتم استدعاء الوظيفة display() دون تقديم أي معلمات. في هذه الحالة، تستخدم وظيفة display() القيم الافتراضية c = * و n = 1.

ثم، في المرة الثانية التي يتم فيها استدعاء الوظيفة، يتم تقديم المعلمات الأولى فقط. في هذه الحالة، لا تستخدم الوظيفة القيمة الافتراضية الأولى. يستخدم كمعلمة أولى ما تم تقديمه كمعلمة أولى c = #، ويستخدم كمعلمة ثانية القيمة الافتراضية n = 1.

عندما يتم استدعاء display() للمرة الثالثة، يتم تقديم إثنين من المعلمات، ولا يتم استخدام القيم الافتراضية. القيم المقدمة هي c = $ و n = 5.

ال أخطاء الشائعة عند استخدام القيم الافتراضية

  1. void add(int a, int b = 3, int c, int d = 4);
    الوظيفة أعلاه لن تتمكن من التجميع. لا يمكنك تخطي قيمة افتراضية بين 参数.
    في هذه الحالة، يجب تخصيص قيمة افتراضية لـ c.
     

  2. void add(int a, int b = 3, int c, int d);
    الوظيفة المذكورة أعلاه لن يتم تجميعها. يجب أن تقدم قيمًا افتراضية لكل معلمة بعد b.
    في هذه الحالة، يجب أيضًا تخصيص القيم الافتراضية لـ c و d.
    إذا كنت بحاجة إلى دالة افتراضية واحدة فقط، تأكد من أن هذه الأداة هي آخر دالة كمعلمة.
     

  3. إذا قام وظيفة واحدة بتنفيذ عدة عمليات أو إذا كان المنطق يبدو معقدًا جدًا، يمكنك استخدام  تحميل functionsفصل المنطق بشكل أفضل.

  4. على أي حال، يجب دائمًا كتابة وظيفة، حتى لو كانت تستخدم فقط لأغراض واحدة.