类中的静态内联函数

时间:2014-02-27 14:46:28

标签: c++ inline static-methods

我想分组我的数学函数。我的数学函数包括许多数学函数,包括“math.h”中的函数和一些常量值。它们不在类或命名空间中。由于性能原因,它们都是内联的。但是如果不是可能的命名空间,我希望它们分组在一个类中。我只想使用这样的函数:

MyMath::Pow(2, 2);
MayMath::PI;

所以我的问题是;如果我可以使用类,函数和值必须是静态的,我想但是因为我知道,静态方法不能内联。如果我们找不到解决方案,我可以使用“MyMath”作为命名空间。

5 个答案:

答案 0 :(得分:3)

这听起来像XY Problem

你试图将一个独立的函数(不属于一个类)放在一个类中 - 可能是因为你来自另一个面向对象的语言,它不能让你编写独立的函数。

要编写包含powexplog等函数的数学库,请创建名称空间MyMath并定义函数。没有必要上课。

答案 1 :(得分:2)

静态函数/方法也可以内联。

默认情况下,类中定义的方法是内联的。

答案 2 :(得分:1)

  

但是因为我知道

,所以无法内联静态方法

这不是真的,静态方法也可以内联。

答案 3 :(得分:1)

静态函数可以与所有其他函数内联相同。但是,对于您的用例命名空间是更好的解决方案。

答案 4 :(得分:0)

static inline完全有效。

如果存储类是extern,则标识符具有外部链接,内联定义也提供外部定义。

如果存储类是静态的,则标识符具有内部链接,并且内联定义在其他翻译单元中不可见。

事实上,使用inline存储类与static不同的情况很少见。