C ++默认构造函数和默认参数

时间:2013-03-11 00:15:31

标签: c++ parameters constructor polymorphism default-parameters

如果我有一个包含以下内容的课程:

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

是否会使用'default'构造函数?

e.g。将:

foo qux;

默认为baz = 0或10?

任何区别:

foo * quux = new foo;

2 个答案:

答案 0 :(得分:6)

  

是否会使用'default'构造函数?

不,指定无参数的构造函数调用只是不明确。编译器无法判断接受无参数的构造函数是否优于接受具有默认值的参数的构造函数,反之亦然。 您的代码无法编译

  

:[{1}}

的任何差异

不,同样的故事。如果您通过foo * quux = new foo;创建对象,则不会发生任何变化。编译器仍然无法决定您打算调用哪个构造函数。

答案 1 :(得分:1)

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