1、一般在每个头文件中用#ifdef #define #endif 来让头文件只编译一次
这个的作用等同于#pragma once,但是前者用的比较多
2、一个原则:尽量在cpp文件中包含需要的头文件,而非在头文件中
3、第二个原则:如果可以不包含头文件,就不要包含了。可以用前置声明的就尽量用前置声明class A;
3、什么时候用前置声明可以解决问题,什么时候就必须要用包含头文件?
在这个文件中如果是仅仅需要的另一个头文件中的类的指针,并没有用到这个类的具体对象,也没有访问到具体成员,可以用前置声明即可。
也就是前置声明只能用于指针