可能重复:
在C++中为什么有头文件和cpp文件?
由于两个相互矛盾的原因,我不太了解C++头文件:
我认为头文件的目的通常是分离接口和实现.换句话说,客户端使用头文件来学习如何使用该类,但不必担心类如何在内部实际实现此功能.
那么,为什么它是头文件中指定的C++类的私有变量?
在我看来,在头文件中使用私有变量违反了接口和实现的分离.直觉上,我认为私有变量在源文件中更有意义,因为这是不暴露给外部世界的文件.
也许我只是误解了头文件的目的,而且1.上面只是完全错误?以什么方式?
Mar*_*k B 10
C++头文件的主要功能是在C++语言中没有模块导入或其他语言中存在的类似内容.编译器从其他文件中了解类型,函数等的唯一方法是使用将代码粘贴到当前源文件中#include.
从理论上讲,您可以将所有源代码放入标题中,只需要一个包含所有标题的源文件.通常不这样做的原因是双重的.首先,编译需要更长的时间(某些项目的重大问题),任何文件的任何更改都会导致项目的完全重新编译.其次,将实现放入源文件确实有助于将接口与实现分开,即使仍然在头文件中指定了部分实现.
请注意,标题中的内联方法也会向您的类的公共/客户端公开实现详细信息.
如果你真的希望将接口与实现完全分开(具有明确的优点),那么C++的方法就是利用pimpl习语.使用该成语,所有私有数据都隐藏在源文件中,并且只向公众提供抽象接口.此外,使用非虚拟接口(NVI)模式可以进一步帮助将客户端与接口更改隔离开来.
头文件的目的是为编译器提供在编译单元(.cpp 源文件)之间共享定义所需的信息。这是一个机械的东西,而不是一个哲学的东西。
例如,私有成员变量需要声明,因为它们定义了对象的大小,编译器在分配对象时需要知道大小。
| 归档时间: |
|
| 查看次数: |
12707 次 |
| 最近记录: |