许多语言,如Java、C#,都没有将声明和实现分开。C#有分部类的概念,但实现和声明仍然保留在同一个文件中。
为什么C++没有相同的模型?有头文件是不是更实用?
我指的是C++标准的当前和即将发布的版本。
发布于 2009-04-15 17:37:17
我经常在C#和C++之间切换,C#中缺少头文件是我最大的烦恼之一。我可以查看一个头文件,了解所有我需要知道的关于一个类的信息--它的成员函数被调用了什么,它们的调用语法等等--而不需要费力地阅读实现这个类的代码。
是的,我知道部分类和#regions,但它们是不同的。分部类实际上使问题变得更糟,因为一个类定义分散在多个文件中。就#regions而言,它们似乎永远不会像我现在所做的那样进行扩展,所以我必须花时间扩展这些小加号,直到我得到正确的视图。
也许如果Visual Studio的智能感知在C++上工作得更好,我就不会有令人信服的理由不得不如此频繁地引用.h文件,但即使在VS2008中,C++的智能感知也无法与C#相提并论
发布于 2009-04-15 17:23:39
头文件允许独立编译。编译文件不需要访问实现文件,甚至不需要拥有实现文件。这可以使分布式构建变得更容易。
这也使得SDK可以更容易地完成。您可以只提供头文件和一些库。当然,其他语言也有解决这个问题的方法。
发布于 2009-04-15 19:17:05
就连Bjarne Stroustrup也称头文件是一堆废话。
但是,如果没有包含必要元数据的标准二进制格式(如Java文件或.Net PE文件),我看不到任何实现该特性的方法。剥离的ELF或a.out二进制文件没有您需要提取的太多信息。而且我不认为这些信息会存储在Windows XCOFF文件中。
https://stackoverflow.com/questions/752793
复制相似问题