看完这文章我做了一个点int ()产生0,因为临时int的值进行初始化而不是因为int()呼吁默认构造函数int.(根据我的理解,这篇文章有缺陷.)
我还说原始(内置)类型没有构造函数.原作者让我查看章节$ 10.4.2(TC++ PL)
内置类型也有默认构造函数(6.2.8美元)
但我仍然认为语句"C++允许甚至内置类型(原始类型)具有默认构造函数." 是有缺陷的(根据C++ 03).
我认为TC++ PL中的Bjarne将"构造函数如符号ie ()"与实际的构造函数调用混淆了.当Bjarne写这本书的时候没有引入价值初始化,对吧?那么根据C++ 98和C++ 03,TC++ PL中的文本是不正确的?
你们有什么感想?
编辑
我亲自(通过邮件)问Bjarne关于TC++ PL中有缺陷的文本,这是他的答复
我认为你混淆了"实际的构造函数调用"与概念上有一个构造函数. 内置类型被认为具有构造函数(标准用于描述其行为的任何单词).
在这个关于bool和1的问题的评论中帮助解决正在进行的辩论:
符合标准的C++预处理器是否允许#define用户重新定义语言关键字?如果是这样,符合标准的C++预处理器是否允许这样做?
如果C++程序重新定义了一个语言关键字,那么该程序本身是否符合标准?
我知道已经问过类似的问题,但我的问题是不同的,所以请不要在完全阅读之前将其标记为重复或其他内容.
Bjarne Stroustrup在他的"C++编程语言"一书中说过
10.4.2内置类型也有默认构造函数
另请阅读同一本书第6.2.8节.
以下链接还表示内置类型在C++中具有默认构造函数.
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=15
http://www.geeksforgeeks.org/c-default-constructor-built-in-types/
但是以下链接的答案表明内置类型没有构造函数.
另外,请阅读以下链接,这些链接说明int i=int();原因值初始化之类的语句基本上最终为零初始化.
以下是我有时问过的问题,即int a=int()在C++ 98中发生了什么,我得到了默认初始化的答案.
如果我没有错,那么在C++标准中没有提及或者C++标准没有说原始类型也有构造函数.那么,从Bjarne Stroustrup的书中,我可以说它在概念上是真的,他们有构造函数,但实际上没有像内置类型的构造函数这样的东西吗?他书中的文字真的有缺陷吗?或者,根据Bjarne Stroustrup的书,当它们被实际调用和使用时,它是否真的如此?