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中文网其他相关文章!