函數可能沒有一些結構信息?像這樣的 int f(int x,int y=1)
和調用f(2)它只是很好,但對於這int f(int x,struct my_struct &y)
考慮到它是一個參考有什麼正確的方法?功能省略結構
Q
功能省略結構
1
A
回答
2
由於它是非const
引用,因此不能將其綁定到作爲臨時對象的默認值。您可以它綁定到一些非臨時對象,像這樣:
my_struct obj;
int f(int x, my_struct& y = obj) {
// ...
}
但是,這將意味着,如果沒有第二個參數的f
每次調用將有機會獲得同樣的obj
。他們都可以修改它,然後下一個會收到一個obj
與不同的狀態。這不是默認值的典型特徵。你期望它每次都有相同的默認值。
如果可能不傳遞一個對象,爲什麼你的函數將採用非const
引用的對象?當您希望調用者傳遞一個對象供您修改時,您可以採用非const
引用。
改爲y
參數代替const
參數可能更有意義。當你希望調用者傳遞一個對象給你觀察並且你不想複製它時,你採用const
引用。然後你能將其綁定到一個臨時的對象,像這樣:
int f(int x, const my_struct& y = my_struct(1, 2, "some args")) {
// ...
}
相關問題
- 1. 功能的省略號
- 2. 結構和功能
- 3. 結構和功能
- 4. 省略搜索結果
- 5. 功能結構分,其他結構
- 6. C中結構和功能的結構
- 7. 結構與功能參數
- 8. 結構中的功能
- 9. 導入功能結構
- 10. 結構指針功能?
- 11. 功能結構定義
- 12. 結構,功能和數組
- 13. 功能指針和結構
- 14. 調用功能從結構
- 15. 功能的C++結構
- 16. 功能和結構與類
- 17. C的結構 - 錯誤:參數名稱省略
- 18. 結構綁定和強制複製省略
- 19. golang JSON編組:如何以省略空嵌套結構
- 20. 帶省略元素的CSS省略號?
- 21. LR(1)BNF語法功能參數與後省略號
- 22. 無初始參數而獲得省略號功能參數
- 23. 製作功能有幫助省略號的參數()函數
- 24. C#的LINQ替代的lodash省略功能
- 25. 省略數據類型構造
- 26. fetchArray()省略第一個結果
- 27. 從PHP省略主鍵MySQL結果
- 28. Scala的XML省略結束標記
- 29. SQL - 伯爵省略的結果的
- 30. 忽略功能?
歡迎堆棧溢出!我不明白你想問什麼。你問結構參數是否可以有默認值?或者你問是否參考參數可以有默認值?或者是其他東西? – 2013-02-27 20:43:07
是的。請注意,所提到的問題沒有被接受的答案,但是最高的投票答案是你之後的答案。 – 2013-02-27 20:47:49
謝謝,實際上他們都是。 – siloan 2013-02-27 20:50:05