- 头文件中定义的函数是否会自动内联?
- 如果我在一个类中声明一个函数并在外部使用关键字inline 给出定义,这个函数是内联的吗?如果是,为什么这不违反内联函数应在声明时赋予主体的法律?
最佳答案
在类定义中定义的任何函数都是内联的。任何标记为 inline
的函数也是内联的。
class C {
int f() { return 3; } // inline
int g();
int h();
}
inline int C::g() { return 4; } // inline
int C::h() { return 5; } // not inline
如果所有这些代码都在一个 header 中,并且该 header 在多个翻译单元中使用,您会收到一个提示,说 C::h
有多个定义。 C::f
和 C::g
没问题,因为它们是内联的。这就是如今 inline
的主要作用:允许在多个地方定义相同的函数(前提是定义“相同”)。
关于c++ - 内联函数和类以及头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865634/