2011-05-01 70 views
7

我有一個功能,看起來像這樣:通過引用訪問默認參數安全嗎?

class SomeClass { 
    // ... 
}; 

void some_function(const SomeClass& arg = SomeClass()); 

功能some_function通過引用訪問它的參數,並有一個默認值。這樣做是否安全,或者在我沒有參數的情況下調用該函數時引用無效?

+0

對於我來說,看到14K的用戶問這個問題!!(沒有冒犯) – Sherif 2011-05-01 21:05:32

+3

@mavric:誰說代表贏得回答C++的問題?一個人的代表是相當不相干的 - 相信我,我是26k! – Puppy 2011-05-01 21:06:31

+0

@mavric我是Java/Scala程序員,我寫了一些嚴肅的C++程序已經很長時間了,所以我的C++有點生疏,我只是把它作爲一個愛好再玩一次。 – Jesper 2011-05-01 21:08:47

回答

8

是的,它是安全的。綁定到臨時的const引用將該臨時的生命週期延長到引用的生命週期。右值引用也是如此。

4

這將是有效的。用作默認值的臨時生命週期是函數調用生命週期的超集。這與明確傳遞臨時參數(默認參數基本上是語法糖,從而避免了鍵入,但與顯式傳遞的參數幾乎完全相同)的情況也沒有區別。

相關問題