Rom*_*nov 1 c++ header include
#include
在.h
文件中和在.c
文件中执行a有什么区别?
例如,我有一个文件a.h
,a.c
其中有一个class A
。我使用class A
的class B
(b.h
,b.c
)。做一个include之间有什么区别:
#include "a.h"
Run Code Online (Sandbox Code Playgroud)
在b.h
VS b.c
?
通常,类定义通常在.h文件中,而实现则在.c(pp)文件中。
#include "a.h"
在bc文件而不是bh文件中执行操作的一个好处是,每当ah更改时,不仅bc还会重新编译包含bh的任何其他文件。
而且,您有点不必要向使用bh的任何人公开B的实现细节。这个想法是bh不应包含对使用B类的人不感兴趣的其他信息(不是因为它是秘密的,而是因为人们不在乎而且您不想以此来打扰他们)。
无需强迫任何人(包括bh)也间接包含其他十几个.h文件(因为它们已#bh中包含),仅因为您碰巧在bc中使用了该文件即可,避免混乱。
因此,如果可能的话,最好进入#include "a.h"
BC!
但这并不总是可能的。如果您仅在bc内使用A,并且在bh中没有对A的引用,则可以。另外,如果bh仅包含指向A的指针(即,作为成员,函数参数或返回值),但不包含“类型相关”引用,则也可以仅将其放在bh中:
class A;
Run Code Online (Sandbox Code Playgroud)
并仍然保留#include "a.h"
在您的bc中,但是,如果对ah有更多的引用或依赖关系,那么包括bh在内的任何人都真的不能没有,那么#include "a.h"
应该进入bh