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);
后者是你遇到的。构造函数可以像任何其他普通函数一样具有默认参数。
例如,有一个 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);
后者是你遇到的。构造函数可以像任何其他普通函数一样具有默认参数。