6

在阅读 Oliveira 和 Stewart 的《Writing Scientific Software》一书时,我看到了这段有趣的段落:

"共享变量是危险的,应该在共享库中避免

因此,如果您正在编写共享或动态链接库,请避免使用static局部saved变量并避免使用全局变量。”

(第 55 页)

但是static成员函数呢?这些在共享库中是否同样危险?我也应该避免这些吗?为什么/为什么不?

4

3 回答 3

4

但是static成员函数呢?这些在共享库中是否同样危险?

一点也不:static不应该避免成员函数:与static表示共享状态的变量不同,static成员函数表示共享计算。只要这些计算是无状态的,它们就完全没有危险。

于 2012-11-06T05:27:28.487 回答
3

静态函数不是问题。事实上,科学软件中常用的许多函数都是纯数学函数,例如sin(), sqrt(), log().

另一方面,静态变量是共享状态的指标,应该避免使用。

于 2012-11-06T05:25:42.687 回答
1

不是天生的。不使用任何静态状态的静态成员函数(例如,仅使用局部变量或线程局部变量的成员函数)并不是不安全的。此类方法经常用于备受推崇的库中,例如 boost 或 guava(Java 世界的最后一个示例)。

于 2012-11-06T05:26:44.543 回答