[英]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.