向前声明:只有class可以向前声明,struct不可以。对于向前声明,只是告诉编译器这里有一个类在外部定义,具体定义在这里不知道,所以在该文件里面,只能使用向前声明的类的指针或是应用,而不能直接定义该类的对象,因为不知道该类的具体定义。(在编译期,编译器必须知道类的大小,才能在构造相应的类实例时分配具体大小的空间。注:并非只在创建实例时才必须知道类的类型的大小,编译时,也必须知道。)对于在某些文件里面,由于只需要使用到某个类的指针或是引用,而不需要定义类的对象,此时就可以使用向前声明,而不需要包含定义该类的头文件,这样可以较少一些不必要的冲突或是错误。