勘定/初始化引用
回答
它被稱爲默認參數,如果您訪問this link,您將瞭解到這些參數。
默認參數是一個函數參數,其中提供了默認值 。如果用戶不提供此參數的值,則將使用默認值。如果用戶確實爲默認參數提供了 值,則使用用戶提供的值。
所以,如果你叫f
這樣的 -
f();
然後x
將包含hello
,但如果你這樣稱呼它 -
f("test");
然後x
將包含test
。
@Prime:那是一個錯字。修復。 –
您的參數(x
)在調用函數的上下文中創建/初始化。字符串文字「hello」具有靜態存儲持續時間。
該標準沒有指定存儲其中任何一種存儲器的形式,但在通常情況下,字符串文字將駐留在直接從可執行文件中的數據初始化的一些存儲器中,並且x
將在堆棧上創建(如果你不在其他地方傳遞其他東西,則傳遞的文件的地址將被初始化)。
這個參數聲明等效於以下更明確的一個
void f(const string &x = string("hello"))
你是正確的:在=
(所謂默認參數)之後的部分,當函數被調用時沒有明確的說法,使用,如在
f();
在這種情況下string
類型的臨時對象從"hello"
初始化構造,然後用於作爲參考的初始化程序x
。該臨時的建設調用代碼,這意味着的背景下進行的,上面的調用等效於
f(string("hello"));
要回答你的問題有關"hello"
:"hello"
是一個字符串,其具有靜態存儲持續時間(即它駐留在靜態內存中,就像在C中一樣)。但是請注意,在本例中,它不是"hello"
本身,它被用作參考的初始化程序。在這種情況下,編譯器會爲此目的隱式創建一個短暫的無名暫時對象,如我上面的示例中明確闡述的那樣。
- 1. 初始化引用
- 2. 外部引用初始化
- 3. 初始化ArrayList引用null
- 4. 在初始化列表中初始化引用對象成員
- 5. C++:在初始化列表中初始化對ofstream的引用
- 6. 在初始化列表中初始化引用
- 7. 用數組或初始化初始化一個NSMutableArray初始化
- 8. 如何引用在初始化程序中用c#初始化的對象?
- 9. 引用類型的初始化無效?
- 10. 對象引用上動初始化
- 11. 初始化字符串用雙引號
- 12. 引用作爲類成員初始化
- 13. 非const引用的初始化
- 14. 初始化與引用的對象
- 15. 初始化數據成員引用++
- 16. QMutexLocker,QMutex C2530引用必須初始化
- 17. 在C++中引用初始化
- 18. PowerShell HashTable - 初始化時自引用
- 19. 未初始化向引用在換人
- 20. 非const引用的無效初始化
- 21. C++中引用的初始化無效
- 22. 在C++中初始化引用
- 23. 常量引用的文字初始化
- 24. const引用變量初始化
- 25. 初始化引用時出現錯誤
- 26. 初始化數組通過引用C++
- 27. 非const引用無效初始化
- 28. 引用的統一初始化
- 29. 引用類型值和初始化
- 30. 初始化引用和變量在C++
您可能對[Accelerated C++](http://www.informit.com/store/accelerated-c-plus-plus-practical-programming-by-example-9780201703535)感興趣。 – chris