例如,有一个类foo:
class foo {
public:
foo (int = 10);
.....
}
构造函数的原型内部有“int = 10”。那么,这意味着什么? Int只是一个整数类型,不是吗?那么,为它赋值是不是非法的呢?我试图在普拉塔的书中和其他地方找到这样的例子,但我没有找到解释。
答案 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;
void f(int i = 0);
后者就是你遇到过的。构造函数可以像任何其他正常函数一样使用默认参数。