C++构造函数原型参数

C++ constructor prototype parameter

例如,有一个 class foo :

class foo {
public: 
      foo (int = 10);
.....
}

构造函数的原型里面有"int = 10"。那么,这是什么意思呢? Int 只是一个整数类型,不是吗?那么,给它赋值不是违法的吗?我试图在 Prata 的书中和其他任何地方找到这样的例子,但我没有找到解释。

您可以在函数声明中省略参数名称(在定义中也是如此),但您仍然可以指定该参数的默认值。

考虑:

void f(int x = 10) {
    printf("%d\n", x);
}

void g(int = 10);

void g(int x) {
    printf("%d\n", x);
}

int main() {
    f();
    g();
    return 0;
}

结果:

10
10

同样的情况在构造函数的情况下。

So, isn't that illegal to assign a value to it?

这里绝对没有作业= 字符在 C++ 中可以有完全不同的含义:

  • 作业:i = 0;
  • 初始化:int i = 0;
  • 使成员函数纯虚拟:virtual void f() = 0;
  • 指定 default arguments: void f(int i = 0);

后者是你遇到的。构造函数可以像任何其他普通函数一样具有默认参数。