这个问题已经在这里有了答案:
11年前关闭。
是否可以做这样的事情:
// definition
bool MyFun(int nMyInt, char* szMyChar, double& nMyReferencedDouble = 0.0);
然后可以像下面这样调用该函数:
MyFun(nMyInt, szMyChar, nMyReferencedDouble);
或像这样:
MyFun(nMyInt, szMyChar);
我的编译器(VS 98)提示。有没有办法做到这一点?
最佳答案
您可以改为重载该函数。
// Definition
bool MyFun(int nMyInt, char* szMyChar, double& nMyReferencedDouble);
// Overload
bool MyFun(int nMyInt, char* szMyChar)
{
double nMyReferencedDouble = 0.0;
MyFun( nMyInt, szMyChar, nMyReferencedDouble );
}
这就是您如何绕过 C# 中没有默认值的当前限制,并且同样适用于 C++ 中的语义限制。
关于c++ - C++ 中具有默认值的函数的引用参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2094154/