h文件中有个普通函数(非类成员)有实现代码,被多个h使用,编译时提示error lnk2005,加入inline 解决。
声明为内嵌函数,编译时类似宏一样直接替换至调用代码段进行编译,不会产生全局连接符号,所以不会产生lnk2005。
类的成员函数在.h中短代码的实现,编译器经常自动加入inline进行编译。
例如:Get()这样短小的函数放在h文件中
class A
{
pubic:
int Get()
{
return m_nSize;
}
private:
int m_nSize;
}
详百度inline和宏的原理。
inline由空间换取时间的提高效率方法,造成目标文件过大,适合短小调用频繁的函数,不过对现在的硬盘来说,基本差不多。