proof1 发表于 2024-11-29 10:55

引用参数类型,可以设置缺省值吗?

比如,以下代码是否合法?


声明
voidfun ( int &W = 6 ) ;
定义
voidfun ( int &W ){
    W = W * 10;
    cout<<W<<endl;
};


调用方法:
int a=3
fun(a) ;
fun() ;

dkswxd 发表于 2024-11-29 11:10

看起来可以的

https://en.cppreference.com/w/cpp/language/default_arguments



void f1(int*=0);         // Error, '*=' is unexpected here
void g1(const int&=0);   // Error, '&=' is unexpected here
void f2(int* = 0);       // OK
void g2(const int& = 0); // OK
void h(int&&=0);         // OK even without spaces, '&&' is a token here



—— 来自 鹅球 v3.3.92

Walküre 发表于 2024-11-29 15:37

不行,得是右值引用吧
voidfun ( int &&W = 6 ) ;
voidfun ( int &&W ){
    W = W * 10;
    cout<<W<<endl;
}
然后调用
fun(std::move(a));
fun();
页: [1]
查看完整版本: 引用参数类型,可以设置缺省值吗?