【发布时间】:2015-01-01 10:12:51
【问题描述】:
我一直认为 C++ 是目前最强类型的语言之一。
所以我很震惊看到Table 3 of this paper声明C++是弱类型的。
显然,
C 和 C++ 被认为是弱类型,因为由于类型转换,人们可以将结构中的一个整数字段解释为指针。
类型转换的存在是否重要?这种类型转换的显式是否无关紧要?
更一般地说,C++ 是弱类型的,真的被普遍接受吗?为什么?
【问题讨论】:
-
C++ 不是弱类型的,但如果你愿意,你可以颠覆类型系统。所以有人可能会说它不是完全强类型的。
-
.. 如果它允许你(类型双关语很棘手)
-
@Mehrdad 我认为“弱类型”是一个非常主观的术语。 “严格类型”和“静态类型”与“松散类型”和“动态类型”是更客观、更精确的词。据我所知,通常人们使用“弱类型”作为贬义词,意思是“我不喜欢这种语言中的类型概念”。对于那些无法针对特定语言提出专业技术论据的人来说,这有点像是一种自言自语(或者更确切地说,自称自述语言 linguam)。
-
@Mehrdad 的解释也略有不同;普遍接受的意思是“如果类型不匹配,编译器会产生错误”。另一种解释是“没有或很少有隐式转换”。基于此,C++ 实际上可以被认为是一种严格类型的语言,并且大多数情况下它被认为是。
-
Bjarne Stroustrup 的书在第 2 页提到 C++ 是一种强类型语言。谁会比他更了解 :-)
标签: c++ strong-typing reinterpret-cast weak-typing