1.用来解决两个类之间的强耦合问题,例如:
#include "B.h" class A { B b; public: A(void); virtual ~A(void); }; #include "A.h" A::A(void) { } A::~A(void) { } #include "A.h" class B { A a; public: B(void); ~B(void); }; #include "B.h" B::B(void) { } B::~B(void) { }
上面编译不能通过,可以通过前置声明,然后在需要用到的类中定义该前置声明的_指针或引用_, 然后在指针或引用实例化的地方包含前置声明类的头文件。 此外,前置声明可以减少头文件的包含层次,减少出错可能!
2.前置声明在友元类方法中的应用
如果在一个类A的声明中将另一个类B的成员函数声明为友元函数F,那么类A必须事先知道类B的定义;类B的成员函数F声明如果使用类A作为形参,那么也必须知道类A的定义,那么两个类就互相依赖了。要解决这个问题必须使用类的前置声明。