繁体   English   中英

是否应该在共享库中避免使用静态成员函数?

[英]Should static member functions be avoided in shared libraries?

在阅读奥利维拉和斯图尔特的“写作科学软件”一书时,我偶然发现了这段有趣的文章:

共享变量很危险,应该在共享库中避免使用

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

(第55页)

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

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

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

静态函数不是问题。 实际上,人们通常在科学软件中使用的许多函数都是纯数学函数,例如sin()sqrt()log()

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

本质上不是。 不使用任何静态的静态成员函数(例如仅使用本地或线程局部变量的静态成员函数)并不安全。 这些方法经常用于备受推崇的库中,例如boost或guava(最后一个来自java世界的例子)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM