首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定用户是否为默认参数指定了值?

问如何确定用户是否为默认参数指定了值?
EN

Stack Overflow用户
提问于 2016-08-18 18:01:09
回答 3查看 57关注 0票数 0

我有一个带有默认参数的C++函数。

在函数中,如果我发现此参数具有默认值,则可能有两种可能性- (A)调用此函数的用户未提供此参数的值,因此分配了默认值(B)用户提供了此参数的默认值。

我需要能够区分这两种情况。做这件事的最好方法是什么?

EN

回答 3

Stack Overflow用户

发布于 2016-08-18 18:03:53

AFAIK,则编译器在调用点处替换默认参数。没有办法将这与提供完全相同的参数的用户区分开来。

您可以使用两个不同的函数来区分这两种情况:一种函数具有要指定默认值的参数,另一种则没有。

票数 3
EN

Stack Overflow用户

发布于 2016-08-18 18:27:18

使用重载函数。

代码语言:javascript
复制
void do_great()
{
    // default operation
}

void do_great(int value)
{
    // non-default operation
}
票数 0
EN

Stack Overflow用户

发布于 2016-08-18 18:05:09

代码语言:javascript
复制
class A
{
private:
   const int _defaultValue = 0;

public:
   void function(int userValue = _defaultValue)
   {
      if (userValue != _defaultValue)
         ....;
      else
         ....;
....

对于函数也是如此:

代码语言:javascript
复制
namespace { const int defaultValue = 0; }
void function(int userValue = defaultValue);
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39015265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档