免责声明,.h和.cpp声明与实现

.h一般放类的声明, .cpp放类的定义;
1.如果实现不用inline关键字,要放到.cpp中。 两个以上文件包含.h,会出现重复定义错误already defined in。
原因:每个.cpp被编译成一个独立的.obj; 两个以上.cpp包含同一个.h而这个.h中含有实现部分,这个实现部分就被编译到两个.obj中, 此时编译器发现前面已经有,就会出现编译错误。
2.如果实现用inline关键字, 就应该放到.h中。 如果只放到.cpp中相当于外部定义用关键字inline修饰, 则会出现没有定义错误unresolved external symbol。
原因:由内联函数是在调用处展开函数体,由于这个展开过程是在编译时进行的,又由于我们将调用处及类的文件分别单独编译,在编译调用处时不可见,所以出现问题。内联函数只限出现在所编译依赖的目标文件(object file)中。必须在调用处的源码中#include进来, 如#include “.cpp”,当然.cpp中要全部是inline修饰的,不然会出现第一种错误。
Tags:  自我实现 收付实现制 少林寺声明 遗失声明 免责声明

延伸阅读

最新评论

发表评论