通过引用访问默认参数是否安全?

时间:2011-05-01 20:55:54

标签: c++

我有一个看起来像这样的函数:

class SomeClass {
    // ...
};

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

函数some_function通过引用访问其参数并具有默认值。这样做是否安全,或者在没有参数的情况下调用函数时引用是否无效?

2 个答案:

答案 0 :(得分:8)

是的,这很安全。绑定到临时的const引用将该临时的生命期延长到引用的生命周期。右值参考也是如此。

答案 1 :(得分:4)

这将是有效的。用作默认值的临时值的生存期是函数调用的生存期的超集。这也没有什么不同,如果你明确地传递了一个临时值(默认参数基本上是语法糖,节省你的输入,但行为或多或少与明确传递的参数相同。