前置声明是指声明一个类或结构体而不定义它,比如:
class A;
struct B;
在声明之后,定义之前,该类或结构体被称为不完全类型(incompletion type),意思是,知道类型A和B,但不知道他包含哪些内容
不完全类型的使用有一些限制,不如不能用它来定义对象,但可以定义指象该类型对象的指针,比如不但定义 A a; B b;,但可以定义
A* a;
B *b;
原因是因为编译器不知道A和B有多大,所以无法构造对象,但是指针的类型是确定的4个字节,编译器就可以构造。
不完全类型也可用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数.