在阅读奥利维拉和斯图尔特的“写作科学软件”一书时,我发现了这段有趣的文章:
“共享变量是危险的,应该在共享库中避免
因此,如果您正在编写共享或动态链接库,请避免使用
static
或saved
局部变量并避免使用全局变量。“(第55页)
但是static
成员函数呢?这些在共享库中同样危险吗?我也应该避免这些吗?为什么/为什么不呢?
答案 0 :(得分:4)
但是
static
成员函数呢?这些在共享库中同样危险吗?
完全没有:static
成员函数不应该被避免:与表示共享状态的static
变量不同,static
成员函数表示共享计算。只要这些计算是无状态,它们就完全没有危险。
答案 1 :(得分:2)
静态功能不是问题。事实上,科学软件中常用的许多函数都是纯数学函数,例如sin()
,sqrt()
,log()
。
静态变量是共享状态的指标,应该避免。
答案 2 :(得分:1)
不是天生的。不使用任何静态的静态成员函数(例如仅使用本地或线程局部变量的静态成员函数)并不安全。这些方法经常用于备受推崇的库中,例如boost或guava(最后一个来自java世界的例子)。