这都是基础,其实只有一句话:永远别把函数的实现(定义)放到 .h 文件中。 .H文件中只方声明,实现就在.cpp文件,这样永远不会出现重复定义的错误。
编译
.h是不参与编译的,编译器会将cpp文件中包含的.h文件复制到.cpp文件里面,然后编译每个.cpp生成对应的obj文件, obj文件里保存了对应cpp文件中的函数变量名,以符号表格式存在obj文件里面.
链接
连接器将所编译的obj文件读取到内存中,这个时候符号和对应的函数进行合并.如果有两个obj文件中存在相同的变量符号,那么就报出会“链接错误,变量重复定义.”
如果把定义放在.h中,那么多个cpp都包含此.h就会出现重定义的问题。
所以, 我们把函数的声明放在.h中,函数的定义放在.cpp中。
阅读(898) | 评论(0) | 转发(0) |