C ++构造函数原型参数

时间:2015-03-15 14:34:11

标签: c++ class constructor arguments prototype

例如,有一个类foo:

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

构造函数的原型内部有“int = 10”。那么,这意味着什么? Int只是一个整数类型,不是吗?那么,为它赋值是不是非法的呢?我试图在普拉塔的书中和其他地方找到这样的例子,但我没有找到解释。

2 个答案:

答案 0 :(得分:5)

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

考虑:

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

构造函数情况也是如此。

答案 1 :(得分:0)

  

那么,为它分配值是不合法的呢?

此处绝对没有作业。 {C}中=字符的含义可能完全不同:

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

后者就是你遇到过的。构造函数可以像任何其他正常函数一样使用默认参数。