提问人:CREATIVITY Unleashed 提问时间:8/1/2023 最后编辑:Remy LebeauCREATIVITY Unleashed 更新时间:8/2/2023 访问量:160
所有参数都给定默认值的默认构造函数?
Default constructor with all parameters given default values?
问:
我正在读乔伊斯·法雷尔(Joyce Farell)关于C++的书,它说默认构造函数是没有参数的构造函数。我毫不费力地理解了它。但是,在它说如果您将默认值设置为构造函数中的所有参数之后,情况开始变得更糟,它仍然被称为默认构造函数。
但我认为它仍然是参数化构造函数,因为我们可以在调用构造函数时通过传递参数来覆盖值。
代码如下:
现在,我该怎么称呼这个构造函数呢?创建对象时,它充当默认构造函数。但同时,在创建对象时,相同的构造函数充当参数化构造函数。employee e1
employee e2
但是构造函数是相同的 - 因此它应该是默认的或参数化的,而不是同时使用两者。
我认为您不能将其称为构造函数重载,因为您调用的是相同的构造函数,而不是不同的构造函数。
我实际上是在试图澄清我的概念。我的代码中没有任何错误。
答:
从 https://en.cppreference.com/w/cpp/language/default_constructor
默认构造函数是可以在不带参数的情况下调用的构造函数(使用空参数列表定义,也可以为每个参数提供默认参数)。
不需要参数的构造函数是默认构造函数。这包括一个带有参数的构造函数,如果所有参数都具有默认值。也可以选择使用参数调用此类默认构造函数。能够被称为带有参数的构造函数并不会使它成为默认构造函数,因为参数不是必需的。
C++ 不识别“参数化构造函数”的概念。如果你指的是一个带有参数的构造函数,那么这个概念并不排斥默认构造函数。根据该定义,构造函数既可以是参数化的,也可以是默认的构造函数。
上一个:Java 中的 Main 类代表什么样的实体?[复制]
下一个:处理对象操作
评论
C()