定义放在头文件里,就不能被多个源文件使用了。
因为源文件用#include指令引用头文件,其实是一个简单的复制粘贴,也就是把头文件内容复制到源文件中#include那一行。如果把定义放在头文件里,且多处引用的话,同一个函数就会被多个源文件重复编译,就会有编译错误了。
这样,你就不能写一些通用的用于重复使用的函数了。
要害主要还是在头文件定义类会暴露具体的实现方法,而在matlab这种软件的一些自带矩阵运算函数都是经过他们公司的研究实现的最高效的算法,涉及到知识产权,源代码自然不会给你看,这时候只提供给你编译好的库文件和头文件就能避免泄露,至于重新编译头文件没什么影响,因为头文件还有库这些文件一般都是由供应商编译好提供给你的,套用就行。
头文件提供类的结构,而类的实现不放在头文件是为了不将类的实现暴露出来在最后提供给用户的API,可是头文件和库的形式,这样,你的实现过程不再暴露,而接口也提供了
内联。。。一般只是用在短而常用的函数