首页 >后端开发 >C++ >C 函数可以为非常量引用参数提供默认值吗?

C 函数可以为非常量引用参数提供默认值吗?

Susan Sarandon
Susan Sarandon原创
2024-11-29 17:54:11759浏览

Can C   Functions Have Default Values for Non-Const Reference Parameters?

C 中引用参数的默认值

C 中通过引用传递参数时,可以为其指定默认值吗?

考虑以下函数声明:

virtual const ULONG Write(ULONG &State = 0, bool sequence = true);

尝试编译此代码会导致错误:

error C2440: 'default argument' : cannot convert from 'const int' to 'unsigned long &'
A reference that is not to 'const' cannot be bound to a non-lvalue

答案

只能分配默认值常量引用,而不是非常量引用。这是因为 C 禁止将临时值(在本例中为默认值)绑定到非常量引用。

要解决此约束,您可以使用实际实例作为默认值:

static int AVAL = 1;

void f( int &x = AVAL ) {
   // stuff
} 

int main() {
     f();       // equivalent to f(AVAL);
}

但是,这种方法的实际适用性有限。

以上是C 函数可以为非常量引用参数提供默认值吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn