这不是一个关于如何使用内联函数或者它们如何工作的问题,更多的是为什么它们是这样做的。
类成员函数的声明不需要将函数定义为 inline
,它只是函数的实际实现。例如,在头文件中:
struct foo{
void bar(); // no need to define this as inline
}
那么为什么类函数 有的内联实现要放在头文件中呢?为什么我不能把内联函数的 .cpp
文件?如果我尝试将内联定义放在 .cpp
文件中,我会得到如下错误:
error LNK2019: unresolved external symbol
"public: void __thiscall foo::bar(void)"
(?bar@foo@@QAEXXZ) referenced in function _main
1>C:\Users\Me\Documents\Visual Studio 2012\Projects\inline\Debug\inline.exe
: fatal error LNK1120: 1 unresolved externals