我有一個功能,看起來像這樣:通過引用訪問默認參數安全嗎?
class SomeClass {
// ...
};
void some_function(const SomeClass& arg = SomeClass());
功能some_function
通過引用訪問它的參數,並有一個默認值。這樣做是否安全,或者在我沒有參數的情況下調用該函數時引用無效?
我有一個功能,看起來像這樣:通過引用訪問默認參數安全嗎?
class SomeClass {
// ...
};
void some_function(const SomeClass& arg = SomeClass());
功能some_function
通過引用訪問它的參數,並有一個默認值。這樣做是否安全,或者在我沒有參數的情況下調用該函數時引用無效?
是的,它是安全的。綁定到臨時的const引用將該臨時的生命週期延長到引用的生命週期。右值引用也是如此。
這將是有效的。用作默認值的臨時生命週期是函數調用生命週期的超集。這與明確傳遞臨時參數(默認參數基本上是語法糖,從而避免了鍵入,但與顯式傳遞的參數幾乎完全相同)的情況也沒有區別。
對於我來說,看到14K的用戶問這個問題!!(沒有冒犯) – Sherif 2011-05-01 21:05:32
@mavric:誰說代表贏得回答C++的問題?一個人的代表是相當不相干的 - 相信我,我是26k! – Puppy 2011-05-01 21:06:31
@mavric我是Java/Scala程序員,我寫了一些嚴肅的C++程序已經很長時間了,所以我的C++有點生疏,我只是把它作爲一個愛好再玩一次。 – Jesper 2011-05-01 21:08:47