در برنامه نويسی ممکن است تابعی را به دفعات با آرگومانهای يکسانی صدا بزنيم .
در چنين حالتی ، برنامه نويس می تواند برای آرگومانهای تابع ، مقداری را به
عنوان پيش فرض قرار دهد . هنگامی که در فراخوانی توابع ، آرگومان دارای مقدار
پيش فرض حذف شده باشد ، کامپايلر مقدار پيش فرض آن آرگومان را به تابع خواهد
فرستاد .
آرگومان های پيش فرض بايد سمت راستی ترين آرگومان های تابع باشند . هنگامی که
تابعی با بيش از يک آرگومان فراخوانی می شود ، اگر آرگومان حذف شده سمت راستی
ترين آرگومان نباشد ، آنگاه همه آرگومانهای سمت راست آن آرگومان نيز بايد حذف
شوند . آرگومان های پيش فرض بايد در اولين جايی که نام تابع آورده می شود ( که
معمولاً در پيش تعريف تابع است ) مشخص شوند .
مقادير پيش فرض می توانند اعداد ، مقادير ثابت ، متغيرهای عمومی و يا خروجی
تابع ديگر باشند .
برنامه زير نحوه مقدار دهی به آرگومان های پيش فرض و نيز نحوه فراخوانی تابع با
مقدار پيش فرض را نشان می دهد . در اين برنامه حجم جعبه ای محاسبه می شود .
#include <iostream.h>
// function prototype that specifies default arguments
int boxVolume(int length=1, int width=1, int height=1);
int main()
{
//no arguments--use default values for all dimensions
cout <<"The default box volume is: "<<boxVolume();
//specify length; default width and height
cout <<"\n\nThe volume of a box with length 10,\n"
<<"width 1 and height 1 is: "<<boxVolume(10);
//specify length and width; default height
cout <<"\n\nThe volume of a box with length 10,\n"
<<"width 5 and height 1 is: "<<boxVolume(10,5);
//specify all arguments
cout <<"\n\nThe volume of a box with length 10,\n"
<<"width 5 and height 2 is: "<<boxVolume(10,5,2)
<<endl;
return 0; // indicates successful termination
} //end main
// function boxVolume calculates the volume of a box
int boxVolume( int length, int width, int height )
{
return length * width * height;
} // end function boxVolume
خروجی برنامه فوق به صورت زير می باشد .
The default box volume is: 1
The volume of a box with length 10,
width 1 and height 1 is: 10
The volume of a box with length 10,
width 5 and height 1 is: 50
The volume of a box with length 10,
width 5 and height 2 is: 100
در پيش تعريف تابع
boxVolume
به هر يک از سه آرگومان تابع مقدار پيش فرض 1 داده شده است . توجه داشته باشيد
که مقادير پيش فرض بايد در پيش تعريف تابع نوشته شوند ، ضمناً نوشتن نام
آرگومان های تابع در پيش تعريف الزامی نيست و در برنامه فوق اينکار تنها برای
خوانايی بيشتر انجام گرفته است ، البته توصيه می شود که شما نيز از اين شيوه
استفاده کنيد . به عنوان مثال پيش فرض تابع
boxVolume
در برنامه فوق را می توانستيم به صورت زير نيز بنويسيم :
int boxVolume (int = 1 , int = 1 , int = 1 );
در اولين فراخوانی تابع
boxVolume
در برنامه فوق هيچ آرگومانی به آن داده نشده است لذا هر سه
مقدار پيش فرض آرگومان ها مورد استفاده قرار می گيرد و حجم جعبه عدد 1 می شود .
در دومين فراخوانی آرگومان
length
ارسال می گردد ، لذا مقادير پيش فرض آرگومان های
width
و
height
استفاده می شوند . در سومين فراخوانی آرگومان های
width
و
length
ارسال می گردند لذا مقادير پيش فرض آرگومان
height
مورد استفاده قرار می گيرد . در آخرين فراخوانی هر سه
آرگومان ارسال می شوند لذا از هيچ مقدار پيش فرضی استفاده نمی شود .
پس هنگامی که يک آرگومان به تابع فرستاده می شود ، آن آرگومان به عنوان
length
در نظر گرفته می شود و هنگامی که دو آرگومان به تابع
boxVolume
فرستاده می شود تابع آنها را به ترتيب از سمت چپ به عنوان
آرگومان
length
و سپس
width
در نظر می گيرد و سرانجام هنگامی که هرسه آرگومان فرستاده
می شود به ترتيب از سمت چپ در
length
و
width
و
height
قرار می گيرند .
|