簡體   English   中英

初始化參數時會發生什么? C ++

[英]What happens when you initialize a parameter? C++

void foo (int i , int k = 7) {
    cout << k;
}

int main(){
    foo(1, 2);    
}

k將輸出2.我的問題是,foo以什么順序初始化參數並獲取參數? 什么是foo經歷的過程2.謝謝

 void foo (int i , int k = 7);

這個原型意味着如果你只用第一個參數調用foo,那么第二個被隱式設置為7。

    foo(1, 2);  // i=1, k=2
    foo(5);  // <==> foo(5, 7)   i=1, k=7

編譯時在編譯時解析此機制。 每當調用foo時缺少參數k,編譯器會自動插入值為7(即foo(5) )。 如果沒有丟失,則采用實際參數(即foo(1, 2) )。

您的示例與沒有使用默認參數聲明foo的情況沒有什么不同。

默認參數由編譯器處理。 當編譯器遇到只有一個參數的foo調用時,它會為你添加第二個參數。

例如:

foo(3);

將被編譯器轉換為

foo(3, 7);

就這樣。

這稱為函數初始化器。

如果不將第二個參數指定為foo(1,2),它將在屏幕上輸出“7”(當您使用foo(1)時)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM