1

我对动机很感兴趣——C/C++ 中将接口与头文件的实现分开的动机是什么?为什么其他语言的作者不借用这个概念并在其他(较新的)语言中使用它?这是否意味着这个概念不好?

编辑:我不是在问为什么 c/c++ 使用头文件——我是在问为什么这个概念没有保留在 Java 等较新的语言中。

4

2 回答 2

9

在设计 C 语言时,计算机的资源很少,因此将处理时间和内存使用量保持在最低限度是很重要的。使编译器能够读取源文件并“即时”编译它的设计,在一次传递中以最少的资源使用,优于使编译器对源代码进行多次传递或构造一个在发出编译代码之前内存中的大型数据结构。头文件支持一次性编译:它们为您提供了一种声明和使用符号的方法,而它的定义可能会在源代码的后面出现,甚至可能在不同的文件或外部库中。

C# 和 Java 等较新语言的设计认为程序员的便利性比优化编译器的资源使用更重要。此外,许多现代 C 编译器已经使用多次传递,因为不可能在一次传递中应用许多代码优化;如今,对新语言使用单通道设计几乎没有什么好处。

头文件还有其他好处:它们允许您将接口与实现分开,这样头文件就可以用作 API 文档,而不会暴露实现细节。

于 2013-06-23T09:17:04.200 回答
-1

我不确定这对于 Stackoverflow 是否合适,但是:

当我编写课程时,我很欣赏拥有单独的 .h 和 .cpp 文件的清晰性。这在几个方面使我受益:

1:当其他人必须使用我的类时,他们只需要读取 .h 文件 - 类的方法内部没有代码可以混淆他们 - 这个函数是这样调用,这里是解释它做什么的注释,你其余的不需要知道。

2:当我必须查看我的代码时,拥有单独的 .h 和 .cpp 可以让我进行比较/对比。如果我在 .cpp 中有一个我最终不需要的半生不熟的方法,那么两个文件之间就会不匹配。因此,我可以使用更清晰的 .h 文件,该文件更易于查看,以查看我是否设法在 .cpp 文件中做错了什么。

于 2013-06-23T09:06:47.113 回答