如果我有一段代码,说main.cpp
需要定义的类然后在文件中myheader.h
包含所有所需的库/头文件是不好的做法吗?main.cpp
myheader.h
如果是这样,为什么?考虑到main.cpp
没有myheader.h
任何办法是行不通的。
对不起,如果这个问题有点简单 - 我只是不确定分隔多个文件的常见做法。
通常,您应该只包含当前文件中需要的那些内容。好的,所以无论如何都要main.cpp
使用myheader.h
,那么为什么不包括,比如说,<iostream>
以及其他myheader.h
需要的标题main.cpp
?因为明天您将要包含哪些不需要或包含myheader.h
在中的其他头文件,这是多余的并且会增加编译时间。因此,无论在 中需要什么,都包括在 中。myOthercpp.cpp
<iostream>
myheader.h
main.cpp
main.cpp
这种模式有一个例外,称为预编译标头。
有例外,但通常最好不要在标题中包含标题。
例如,如果你有一个大图书馆 biglibrary.cpp / biglibrary.h
一个依赖大库做一些工作的类 myclass.h / myclass.cpp
还有一些依赖于 MyClass 的代码 - main.cpp
main.cpp 不依赖于 biglibrary。它不需要知道任何事情。它只取决于 myclass.h。如果 myclass.h 包含 biglibrary.h 则编译 main.cpp 必须解析 biglibrary.h 以及减慢编译速度。
另一个问题是循环依赖。假设您有 2 个类 A、B。A 引用 B 和 B 引用 A
你是在 bh 中包含 ah 还是在 ah 中包含 bh
一个更简洁的解决方案是只在源文件中包含您需要的标头。
如果标头中的代码需要对不存在的类的引用,请使用如下所示的前向减速:http ://www.eventhelix.com/realtimemantra/headerfileincludepatterns.htm