2016-11-22 169 views
0

我不知道在C语言的任何地方是否使用了类型擦除技术。 类型转换完成后,C中会发生什么?它是否使用类似于删除和向下铸造的概念?C语言中是否存在类型擦除概念?

类型擦除和类型铸造之间的主要区别是什么?

+1

C没有任何潜在类型,所以没有什么可以擦除的。 – Barmar

+0

这是['C++'问题](http://stackoverflow.com/questions/6089498/type-erasure-for-methods-with-differing-in-return-types)FYI。 –

+0

类型擦除和铸造之间的主要区别是什么? – NaveeNeo

回答

1

你是Java开发人员?
如果是的话,你需要忘记很多东西,并学习另一个很多。

向下投射意味着继承。因此,这不是C.

C可几乎所有的东西转换为任何事情(C假设你知道你在做什么,相反到Java,C#等)

类型擦除是一个Java的概念,因为JRE没有按”在运行时没有泛型,只有原始类型。在C语言中,你只有运行时的二进制代码,就像在Assembly中一样,这就是我们需要的闪电般的可执行文件(记住几乎所有的编译器,框架或虚拟机都是用C或C++构建的)。

在C中没有RTTI(运行时类型信息)的这种东西,我们不需要这样做,因为C的目标是直接在金属上编程。