包括.h文件

Max*_*Max 2 c++ coding-style

假设我有两个.h文件:啊和Bh此外,啊包括Bh本身:

Bh - 定义了B类.

class B {
  ...
};
Run Code Online (Sandbox Code Playgroud)

- 定义了A类,它使用了B类.

#include B.h

class A {
  void SomeFunction(const B& b);
};
Run Code Online (Sandbox Code Playgroud)

现在,我有一些.cpp文件,它同时使用A和B类(B类不仅可以用在A :: SomeFunction(B)中)

从设计模式和编码风格的角度来看,包含Ah和Bh(而不仅仅是Ah)的优点是什么?

Mic*_*yan 6

包括"Ah"和"Bh"都使得依赖关系完全清晰.没有理由为什么"啊"不能具有前向声明的B类,因此如果将传递包括更改为前向声明,则包括两个标题都会阻止您的".cpp"文件中断.一般来说,依赖传递包含并不是一个好主意,而是应该明确包含所有直接依赖关系.(请注意,这不适用于旨在提供传递包含的"主包含"标头).