【问题标题】:C++ default arguments in function overload evaluated once or each time?函数重载中的 C++ 默认参数评估一次或每次?
【发布时间】:2011-08-05 21:48:38
【问题描述】:

我对对象中重载函数的默认值有疑问。

如果我有如下的函数签名,默认值是否只计算一次或每次?

class X
{
  public:
  f(const RWDate& d=RWDate::now());
}

// when calling f() do I get the current time each time?
X z;
z.f();

// is the default value of d recaculated in the function call?
z.f();

【问题讨论】:

  • 这里没有函数重载……

标签: c++ overloading default-arguments


【解决方案1】:

默认参数在调用点被替换,所以z.f()被转换成

z.f(RWDate::now())

因此,每次调用函数并使用默认参数时都会计算默认参数。

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多