所有参数都给定默认值的默认构造函数?

Default constructor with all parameters given default values?

提问人:CREATIVITY Unleashed 提问时间:8/1/2023 最后编辑:Remy LebeauCREATIVITY Unleashed 更新时间:8/2/2023 访问量:160

问:

我正在读乔伊斯·法雷尔(Joyce Farell)关于C++的书,它说默认构造函数是没有参数的构造函数。我毫不费力地理解了它。但是,在它说如果您将默认值设置为构造函数中的所有参数之后,情况开始变得更糟,它仍然被称为默认构造函数。

但我认为它仍然是参数化构造函数,因为我们可以在调用构造函数时通过传递参数来覆盖值。

代码如下:

Default or parameterized constructor

现在,我该怎么称呼这个构造函数呢?创建对象时,它充当默认构造函数。但同时,在创建对象时,相同的构造函数充当参数化构造函数。employee e1employee e2

但是构造函数是相同的 - 因此它应该是默认的或参数化的,而不是同时使用两者。

我认为您不能将其称为构造函数重载,因为您调用的是相同的构造函数,而不是不同的构造函数。

我实际上是在试图澄清我的概念。我的代码中没有任何错误。

C++ 对象 OOP 构造函数重载

评论

0赞 StoryTeller - Unslander Monica 8/1/2023
作者经常会为了简化移植而放弃精确度。否则他们不校对。更准确地说,默认的 c'tor 是可以在没有参数的情况下调用的 c'tor。喜欢。C()
0赞 Remy Lebeau 8/2/2023
"默认构造函数是没有参数的构造函数“——这是错误的。它应该更像是“默认构造函数可以不带参数调用的构造函数”。

答:

4赞 François Andrieux 8/1/2023 #1

https://en.cppreference.com/w/cpp/language/default_constructor

默认构造函数是可以在不带参数的情况下调用的构造函数(使用空参数列表定义,也可以为每个参数提供默认参数)。

不需要参数的构造函数是默认构造函数。这包括一个带有参数的构造函数,如果所有参数都具有默认值。也可以选择使用参数调用此类默认构造函数。能够被称为带有参数的构造函数并不会使它成为默认构造函数,因为参数不是必需的。

C++ 不识别“参数化构造函数”的概念。如果你指的是一个带有参数的构造函数,那么这个概念并不排斥默认构造函数。根据该定义,构造函数既可以是参数化的,也可以是默认的构造函数。