变量是1还是2并且是编译器还是标准依赖?
class foo {
int val = 1;
foo(int bar = 2) : val(bar) {}
}
答案 0 :(得分:1)
除非在调用构造函数时提供不同的值,否则它为2
。
请参阅cpp reference有关非静态数据成员初始化的信息:
如果成员具有默认成员初始值设定项并且也出现在 构造函数中的成员初始化列表,默认成员 初始化程序被忽略。
答案 1 :(得分:1)
这里:foo(int bar = 2)
被称为默认参数,
并允许您在不提供该参数的情况下调用函数。
如何?
如果你这样做:
foo(100)
然后 val 初始化为100
但是如果你省略参数
foo( )
然后 val 初始化为2
最后,该声明使这个init变得多余:
int val = 1;