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

bgtovc5b  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(113)

我在阅读Joyce Farell写的关于C++的书,书中说默认构造函数是没有参数的构造函数。我理解它没有任何打嗝。**但事情开始变得更糟,因为它说,如果你在构造函数中设置所有参数的默认值,它仍然被称为默认构造函数。
但我认为它仍然是参数化的构造函数,因为我们可以在调用构造函数时通过传递参数来覆盖值。
代码如下:
x1c 0d1x的数据
现在,我该怎么称呼这个构造函数呢?在创建employee e1对象时,它充当默认构造函数。但同时,在创建employee e2对象时,同一个构造函数充当参数化构造函数。
但是构造函数是相同的--因此它应该是默认的或参数化的,而不是同时是两者。
我不认为你可以称之为构造函数重载,因为你调用的是同一个构造函数,而不是不同的构造函数。
我其实是想澄清我的概念。我的代码中没有任何错误。

b4lqfgs4

b4lqfgs41#

https://en.cppreference.com/w/cpp/language/default_constructor
默认构造函数是一个可以不带参数调用的构造函数(可以用空参数列表定义,也可以为每个参数提供默认参数)。
不需要参数的构造函数是默认构造函数。如果所有参数都有默认值,则包括带参数的构造函数。这样的默认构造函数也可以有选择地用参数调用。能够调用这样一个带参数的构造函数并不意味着它不是默认构造函数,因为参数不是必需的。
C++不承认“参数化构造函数”的概念。如果你的意思是一个带参数的构造函数,那么这个概念对默认构造函数来说不是排他性的。根据该定义,构造函数既可以是参数化构造函数,也可以是默认构造函数。

相关问题