这些行是否可以在C ++中内联?

时间:2018-06-19 05:11:19

标签: c++

我正在研究数学向量。

我通常内联这些类函数成员:

float getY() const { return m_y; }

但这些是否适合内联?

float getLength() const { return sqrt(m_x * m_x + m_y * m_y); }  
bool isUnitVector() const { return getLength() == 1.0f; }
Vector2D getZeroVector() const { return Vector2D(); } 

3 个答案:

答案 0 :(得分:1)

这是个人偏好的问题。

我喜欢这样做,但大多数工作场所都不喜欢它。

谷歌编码标准建议不要这样做,如果它们不小,但正如我所说,一些工作场所对此绝对迂腐。

https://google.github.io/styleguide/cppguide.html#Inline_Functions

答案 1 :(得分:1)

您可能会使用几个标准来决定是否应该内联方法:

  • 有些人建议仅使用内联getter功能。
  • 另一个建议是仅内联短函数(例如最多3行)
  • 性能:如果内联函数,编译器可以更好地进行优化。

另一方面,有一些理由不能过多地内联:

  • 头文件中的更多代码会导致头文件的更多更改,更多依赖项和更长的编译时间。
  • 内联函数可以消除您可能要隐藏的模块的功能(库内部)。
  • 特别是当您在类声明中组合声明和函数定义时,它会使类声明更长,更难以阅读。 (更好:类声明后的内联函数)。

正如其他人所说,这是非常基于意见的。我建议你决定如何处理它,然后保持一致。

答案 2 :(得分:-1)

这取决于您希望代码的可读性。例如,

getLength()

比其他程序员更容易阅读和理解 - 而且从现在起五年后,比

更容易理解
sqrt(m_x * m_x + m_y * m_y)

当然一个可以理解它,但是哪一个会花费更少的时间并且将来更容易维护和开发?

更重要的是,对于现代C / C ++编译器,您不应该担心内联它,因为他们会根据分析结果为您做出决定。 #39;超出了我的解释能力。您可能知道,the inline keyword is, like the Pirates' Code, more of a guideline than a strict rule