1. 程式人生 > >C++中帶預設值引數的函式

C++中帶預設值引數的函式

函式的預設引數值,即在定義引數的時候同時給它一個初始值。在呼叫函式的時候,我們可以省略含有預設值的引數。也就是說,如果使用者指定了引數值,則使用使用者指定的值,否則使用預設引數的值。
例1:

int sum(int a = 10,int b = 10)
{
    return a+b;
}

int main()
{

    sum(20,10);
    sum();
    //push 0Ah;
    //push 0Ah;
    //call sum

    int a = 10;
//  mov dword ptr [a],0Ah 
    int b = 10;
//  mov dword ptr [b],0Ah 
sum(a,b); // mov eax,dword ptr [b] // push eax // mov ecx,dword ptr [a] // push ecx sum(); }

注意:函式呼叫時,使用立即數傳參比使用變數傳參效率要高,在彙編程式執行過程中少了變數的copy動作,不用在記憶體中取值再壓棧,在一定程度上進行了優化。但是無論是否指定呼叫傳遞的實參,都會將引數壓入棧中。
函式的預設引數不能出現在左邊的原因:
函式呼叫時,不能給函式的左邊引數傳遞預設值(即不傳參),而給右邊引數傳參,否則編譯不能通過。