c++在类外部定义的成员函数是不是inline函数,没有在内部声明为inline

2024-11-22 18:58:40
推荐回答(3个)
回答1:

是否 inline 和是否在类内部定义没有必然的联系。

你可以在你的函数头部加上 inline 关键字强制打开内联,但编译器仍然会对此做优化。

即使没有加 inline 关键字的函数,如果调用次数不多或者代码很简单,编译器会自动把它转为 inline;反之亦然,即使加了 inline 关键字,某些调用频繁或代码比较复杂的函数,编译器亦然会把它专为非 inline。

回答2:

etiu2009你的概念有误,你可以去翻C++ Primer,在类内定义的函数默认为inline。
对于简单的函数,前面可以显式加上inline表示是内联函数,这样编译器就会在调用处展开代码,提高执行效率。你在成员函数前加inline,在类外定义还是内联函数。不过这只是一种请求式的声明,因为一个有几百行或者循环的函数是不可能inline的。

回答3:

写在类体内的成员函数和inline开头写在类外的成员函数,以及inline开头的非类成员函数是内联函数