-1

如果我有一个类包含:

foo(); //sets baz to 10
foo(int bar = 0); //sets baz to bar
int baz;

会使用“默认”构造函数吗?

例如将:

foo qux;

默认为 baz = 0 或 10?

任何区别:

foo * quux = new foo;
4

2 回答 2

6

会使用“默认”构造函数吗?

不,没有指定参数的构造函数调用只会是模棱两可的。编译器无法判断不接受参数的构造函数是否比接受具有默认值的参数的构造函数更可取,反之亦然。你的代码不会编译

任何区别:foo * quux = new foo;

不,同样的故事。如果您通过new. 编译器仍然无法决定您打算调用哪个构造函数。

于 2013-03-11T00:17:24.410 回答
1

这是一个模棱两可的电话。因此,我认为它甚至不应该编译。编译器无法决定您是要调用foo::foo(int)构造函数还是默认构造函数,foo::foo().

于 2013-03-11T00:17:16.783 回答