در $C++$ میتوان برای یک پارامتر مقدار پیشفرضی را تعیین کرد که هنگام فراخوانی در صورت ندادن آرگومان مربوط به آن پارامتر با مقدار پیشفرض مقدار بگیرد. این مقدار پیشفرض برای ساده کردن فراخوانی توابع پیچیده و بعضی مواقع به عنوان یک شکل میانبر سربارگذاری تابع استفاده میشوند.
مقدار پیشفرض مانند مقدار دهی اولیه به یک متغیر صورت میپذیرد مثال زیر را در نظر بگیرید
void myFunc(int num=1,char ch='A') { . . . }
تابع بالا را به صورت های زیر میتوان فراخوانی کرد:
myFunc(2,'B'); // num=2 & ch='B' myFunc(2); // num=2 & ch='A' myFunc(); // num=1 & ch='A'
مثال زیر را در نظر بگیرید در آن نکته بالا در قالب مثال نشان داده شده است:
void func(T1 P1,T2 P2,T3 P3=D3,T4 P4=D4,T5 P5=D5){} ... func(ARG1,ARG2); // P1=ARG1 & P2=ARG2 & P3=D3 & P4=D4 & P5=D5 func(ARG1,ARG2,ARG3); // P1=ARG1 & P2=ARG2 & P3=ARG3 & P4=D4 & P5=D5 func(ARG1,ARG2,ARG3,ARG4); // P1=ARG1 & P2=ARG2 & P3=ARG3 & P4=ARG4 & P5=D5 func(ARG1,ARG2,ARG3,ARG4,ARG5); // P1=ARG1 & P2=ARG2 & P3=ARG3 & P4=ARG4 & P5=ARG5
هنگامی که از مقادیر پیشفرض و ویژگی سربارگذاری باهم استفاده میکنیم در بعضی اوقات به هنگام فراخوانی برای کامپایلر ابهام به وجود می آید که در بخش سربارگذاری به آن پرداخته ایم.