通过引用访问默认实参是否安全
Is it safe to access a default argument by reference?
我有一个函数,看起来像这样:
class SomeClass {
// ...
};
void some_function(const SomeClass& arg = SomeClass());
函数some_function
通过引用访问它的实参,并且有一个默认值。这样做是否安全,或者当我在没有参数的情况下调用函数时,引用是否无效?
是的,它是安全的。绑定到临时对象的const引用将该临时对象的生命周期延长到引用的生命周期。右值引用也是如此。
将有效。作为默认值使用的临时对象的生命周期是函数调用生命周期的超集。这与显式传递临时参数没有什么不同(默认参数基本上是语法糖,可以节省输入,但行为与显式传递的参数或多或少相同)。
相关文章:
- 非类型引用形参/实参
- 成员函数指针的模板实参演绎
- 函数和函数作为模板函数的实参
- Const到非Const指针模板实参的转换
- 传递boost::函数,该函数接受一个模板实参作为默认为NULL的形参
- 当实参是初始化列表而形参是引用时,重载解析
- 函数模板中返回类型的模板实参演绎
- ostream_iterator的模板实参-每个元素都是pair
- c++——关于使用默认实参的困惑
- std::shared_ptr、继承和模板实参演绎的问题
- 将操作符转换为模板实参的特化
- 使用模板模板形参时,模板实参推导失败
- 带有const实参的c++构造函数
- 函数指针作为模板实参而不是函子
- c++临时对象绑定到实参并返回const引用值
- 调用对象作为默认实参的this
- 当涉及一个重载函数作为实参时,模板实参推导是如何工作的
- 当对象类型为模板实参时,是否有办法将模板实参传递给对象上的函数
- 是否存在允许将非const模板实参类型隐式转换为const的规范方法?
- 通过引用访问默认实参是否安全