内置类型是否拥有默认构造函数?
C 中的基本类型缺乏构造函数的概念一直是争论的主题。该争论源于对术语“默认构造函数”和内置类型的行为的错误理解。
默认构造函数与值初始化
默认构造函数是当没有指定其他初始化方法时,初始化对象的成员变量的成员函数。有趣的是,内置类型表现出类似的行为,导致一些人假设默认构造函数的存在。然而,这个假设是不正确的。
内置类型:没有构造函数
原始类型没有传统意义上的显式构造函数。相反,它们会经历值初始化,这是一个为它们分配默认值的过程(例如,int 为零)。这个过程不是构造函数调用;相反,它是一种语言定义的操作。
语法和行为:模仿构造函数
C 11 中统一初始化语法的引入引入了使用以下方式初始化基本类型的能力通常用于构造函数的语法(例如 int x{5})。这种语法造成了构造函数使用的错觉,但它仍然是值初始化。
Bjarne Stroustrup 的澄清
C 的创建者 Bjarne Stroustrup 承认这种概念模糊。他建议内置类型“被认为具有构造函数”,因为它们具有类似构造函数的行为。
结论
总之,内置类型不具有构造函数。拥有传统意义上的默认构造函数。它们的初始化过程称为值初始化,是一个模仿构造函数行为的单独过程。 C 11 中引入的统一初始化语法进一步模糊了这种区别,导致一些人错误地将内置类型的行为归因于默认构造函数的存在。
以上是内置 C 类型有默认构造函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!