内联函数

来源:互联网 发布:奥斯曼近卫军 知乎 编辑:程序博客网 时间:2024/06/10 08:23

内联函数的定义对编译器来说必须是可见的,以便编译器能够在调用点内联展开该函数的代码。此时内联函数仅有原型是不够的。

所以内联函数在程序中可以多次定义。如若某个源文件需要使用某一内联函数,则必须在该源文件中再次进行定义,这样并不会引发重复定义的错误,但前提是任何一个源文件中内联函数的定义至多出现一次且每个源文件中的定义都必须是相同的,即遵循“单一定义规则”。一般把内联函数的定义放在头文件中,可以确保在调用函数时所使用的定义是相同的。

对于类内的成员函数,如果成员函数直接在类内定义了,则编译器隐式地将其当作成员函数,这也就意味着除了类内只声明函数,定义放在另一个源文件中外,我们还可以直接把定义放在类内,由于隐式内联所以当头文件被多个文件包含时也不会出现重复定义函数的错误。但如果类的成员函数在类内声明,但定义在类外(且仍在头文件中)时不会隐式内联,这时会导致重复定义错误,可以通过显式的将成员函数声明为内联来解决。

0 0