编译.cpp文件 遇.cpp里的头文件会打开(这相当于把.h文件的内容放在#include ".h"处) 如果出现头文件互包 则这个个打开过程会永无止境 如果没有预编译指令,是会这样的
a.h头上的那个#pragma once就会告诉编译器:老兄,这个你已经编译过了,就不要再浪费力气编译了!那么编译器得到这个信息就会不再编译a.h而转回到编译b.h的余下内容。余下内容用到了a.h 就会出错 (使用了 未定义..)
类的前置声明没有告诉编译器这种类型的大小、成员函数和数据成员,指针大小在编译器是确定的
对于前置的声明,编译器只检查参数个数与类型,不检查参数名,没有分配内存。所以,只需要类型与个数即可