2013-03-11 177 views
0

如果我有一个包含一个类:C++默认构造函数和默认参数

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

将“默认的构造函数曾经被使用?

例如将:

foo qux; 

默认为baz = 0或10?

任何差异为:

foo * quux = new foo; 
+3

注意:这些都是*默认的构造函数。 – 2013-03-11 00:18:07

+1

看起来像一个合理的问题,为什么人们总是在简单的基础上降低事物的价值?从常见问题解答 - *“容忍别人谁可能不知道你知道的一切。”*。此外,这不是您通常会在C++入门书中找到的东西。 – JBentley 2013-03-11 01:49:50

回答

6

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

不,构造函数调用指定没有参数将只是含糊。编译器无法分辨接受无参数的构造函数是否优于接受具有默认值参数的构造函数,反之亦然。 你的代码不会编译

所有差异:foo * quux = new foo;

没有,同样的故事。如果您通过new创建对象,则没有任何变化。编译器仍然无法决定你打算调用哪个构造函数。

1

这是一个暧昧的电话。因此,我认为它甚至不应该编译。编译器无法决定是否打算调用构造函数foo::foo(int)或默认构造函数foo::foo()