Sun*_*een 4 c++ arguments visual-c++
可能重复:
在C++中通过引用传递时参数的默认值
有可能做这样的事情:
// definition
bool MyFun(int nMyInt, char* szMyChar, double& nMyReferencedDouble = 0.0);
Run Code Online (Sandbox Code Playgroud)
然后可以像这样调用该函数:
MyFun(nMyInt, szMyChar, nMyReferencedDouble);
Run Code Online (Sandbox Code Playgroud)
或者像这样:
MyFun(nMyInt, szMyChar);
Run Code Online (Sandbox Code Playgroud)
我的编译器(VS 98)抱怨.有没有办法做到这一点?
由于只能将临时对象绑定到const引用,而常量表达式默认参数转换为临时对象,因此只能使用作为const引用的参数来执行此操作.
但是,您可以重载该函数,并使没有引用的函数创建一个本地命名对象,并将其传递给带有额外引用参数的重载.
实际上,我所说的并不完全正确.默认参数类似于参数的初始化器,因此如果您有一个合适的非const double可用,则可以将其绑定到reference参数.
例如
extern double dflt;
bool MyFun(int nMyInt, char* szMyChar, double& nMyReferencedDouble = dflt);
Run Code Online (Sandbox Code Playgroud)
你可以重载这个函数.
// Definition
bool MyFun(int nMyInt, char* szMyChar, double& nMyReferencedDouble);
// Overload
bool MyFun(int nMyInt, char* szMyChar)
{
double nMyReferencedDouble = 0.0;
MyFun( nMyInt, szMyChar, nMyReferencedDouble );
}
Run Code Online (Sandbox Code Playgroud)
这就是你如何解决C#中没有默认值的当前限制,并且同样适用于C++中的语义限制.
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |