在C ++中通过引用传递时,参数的默认值 [英] Default value to a parameter while passing by reference in C++

查看:711
本文介绍了在C ++中通过引用传递时,参数的默认值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我们通过引用传递参数时,可以为函数的参数赋予默认值。在C ++中

Is it possible to give a default value to a parameter of a function while we are passing the parameter by reference. in C++

例如,当我尝试声明一个函数时:

For example, when I try to declare a function like:

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

当我这样做时会出现错误:

When I do this it gives an error:


错误C2440:'默认参数':无法从'const int'转换为'unsigned long&'
不是'const'的引用不能绑定到非小值

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


推荐答案

你可以做一个const引用, - 一个。这是因为C ++不允许临时(在这种情况下的默认值)绑定到非const引用。

You can do it for a const reference, but not for a non-const one. This is because C++ does not allow a temporary (the default value in this case) to be bound to non-const reference.

这样做的一种方法是使用实际实例作为默认值:

One way round this would be to use an actual instance as the default:

static int AVAL = 1;

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

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

但实际使用非常有限。

这篇关于在C ++中通过引用传递时,参数的默认值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆