我有一个带有默认参数的C ++函数。
在函数中,如果我发现此参数具有默认值,则可能存在两种可能性 - (A)用户调用此函数未提供此参数的值,因此分配了默认值(B)用户提供的此参数的默认值。
我需要能够区分这两种情况。这样做的最佳方式是什么?
答案 0 :(得分:3)
AFAIK,编译器替换调用站点的默认参数。没有办法将其与提供完全相同参数的用户区分开来。
您可以使用两个不同的函数来区分这两种情况:一种具有您想要指定默认值的参数,另一种没有。
答案 1 :(得分:0)
使用重载函数。
void do_great()
{
// default operation
}
void do_great(int value)
{
// non-default operation
}
答案 2 :(得分:-2)
class A
{
private:
const int _defaultValue = 0;
public:
void function(int userValue = _defaultValue)
{
if (userValue != _defaultValue)
....;
else
....;
....
功能相同:
namespace { const int defaultValue = 0; }
void function(int userValue = defaultValue);