C 中的内置类型有默认构造函数吗?
尽管 TC PL 中声明内置类型有默认构造函数,C 03 上下文中的答案是细致入微的“不。”
推理
内置类型没有传统意义上的声明构造函数。但是,可以使用类似于构造函数调用的语法来初始化它们。此初始化显示为:
int x0(5); // Looks like a default constructor int x1{5}; // New syntax for default initialization
虽然这些表达式模仿构造函数调用,但它们实际上调用值初始化。值初始化是一种将基本类型初始化为其类型确定的默认值的机制。
初始化语法的含义
虽然内置类型缺乏显式构造函数,但初始化语法造成了默认构造函数的错觉。这在零初始化的新语法中尤其明显:
int z0 = int(); // Appears like a default constructor int z1 = int{}; // New syntax for zero-initialization
这些表达式的行为与默认构造函数类似,将变量初始化为其默认值(在本例中为 0)。
Bjarne Stroustrup 的澄清
当就明显的差异联系时TC PL,Bjarne Stroustrup 澄清,虽然内置类型没有传统意义上的构造函数,但从概念上讲,它们根据其初始化行为被认为具有构造函数。
结论
在 C 03 中,内置类型在技术上不具有默认构造函数。尽管如此,它们的初始化语法创建了此类构造函数的错觉,允许它们像它们一样被初始化。这种区别突出了 C 初始化机制的细微差别及其语法的灵活性。
以上是C 内置类型真的有默认构造函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!