我有一个看起来像这样的函数:
class SomeClass {
// ...
};
void some_function(const SomeClass& arg = SomeClass());
函数some_function
通过引用访问其参数并具有默认值。这样做是否安全,或者在没有参数的情况下调用函数时引用是否无效?
答案 0 :(得分:8)
是的,这很安全。绑定到临时的const引用将该临时的生命期延长到引用的生命周期。右值参考也是如此。
答案 1 :(得分:4)
这将是有效的。用作默认值的临时值的生存期是函数调用的生存期的超集。这也没有什么不同,如果你明确地传递了一个临时值(默认参数基本上是语法糖,节省你的输入,但行为或多或少与明确传递的参数相同。