c++中,除了inline函数和符号常量之外,普通的对象和函数只能被定义一次,所以.h的头文件就用来保存对象和函数的声明,而将定义保存在一个.cpp中,其它要使用该对象或函数的.cpp文件就可以包含该.h头文件。同时使用extern前缀表示:该对象已经在别处被定义,这里只是给编译器一个提示。
同时,我们也要注意在头文件中,可能会一不小心写了个定义,比如:extern int a = 5;虽然加了extern,可这还是一个定义。对于一个函数,如extern nothingToDo() { };虽然也有extern,可是函数体的大括号表示这是一个定义。
对于inline函数和符号常量,由于编译器会用其值来替代它的名字(常量折叠),这样就不会产生多处定义的问题。
总之,头文件中就放普通变量,对象和函数的声明,还有inline函数和符号常量的定义。