内联C++代码

Rob*_*Rob 9 c++ inline-functions

以下代码有什么区别:

class Foo  
{
  inline int SomeFunc() { return 42; }
  int AnotherFunc() { return 42; }
};
Run Code Online (Sandbox Code Playgroud)

两个函数都会被内联吗?内联实际上有什么区别吗?关于何时应该或不应该内联代码,是否有任何规则?我经常使用AnotherFunc语法(例如访问器),但我很少inline直接指定.

Gre*_*ill 26

inline关键字本质上是一个暗示,编译器.使用inline并不保证您的函数被内联,也不会保证它不会保证.您只是让编译器知道尝试更加内联该特定函数可能是个好主意.


Bra*_*nan 16

两种形式都应以完全相同的方式内联.内联对于类定义中定义的函数体是隐式的.

  • 在C++ '03标准中,实际引用是9.3/2:"在其类定义中可以定义成员函数(8.4),在这种情况下,它是内联成员函数(7.1.2),......" (4认同)
  • C++注释,第6.3.1节.http://www.icce.rug.nl/documents/cplusplus/cplusplus06.html#definline (2认同)

Nem*_*vic 6

萨特的本周大师#33回答了你的一些问题以及更多问题.

http://www.gotw.ca/gotw/033.htm