c++形参直接初始化,实参可以为空,这是啥操作

上面这段代码,a.addNum(),上面得形参int number =2(C++可以再形参这直接初始化?),a.addNum()这里可以不带实参?我记得上面这2种情况 c都无法编译,这里我编译过了,如果实参有数据,形参就等于实参,如果实参没有就用形参初始化得值,我得理解是,a.addNum()编译得时候符号表应该是没有参数得,他怎么知道指向函数的,这2个符号表应该都不一样吧。

      // 对外的接口
      void addNum(int number = 20)
      {
          total += number;
      }

 

number=20是一个提前给出的默认值,addNum函数是一个带有默认形参值的函数,通过函数名来调用函数。