类的前向声明最主要的作用是在binary release的时候可以减少头文件的依赖。
因为在做binary release的时候,通常会release一个 release.h + librelease.so,release.h用来被用户include,那么release.h中的所有header file在用户的工作环境中也必须能找的到才可以。所以,release.h 的header file越少对用户也就越友好。很明显,通过前向声明能够减少release.h的header file。
考虑如下的两种release.h
/*方法1*/
/*****release.h******/
#include "foo.h" //直接include头文件
class Release
{
...
Foo foo;