【发布时间】:2012-01-14 11:04:48
【问题描述】:
我最近在 SO 上看到了一些关于函数前 static 关键字的信息,我想知道如何正确使用它。
1)什么时候应该在非成员函数前写关键字static?
2) 在标头中定义静态非成员函数是否危险?为什么(不)?
(附带问题)
3) 是否可以以某种方式在头文件中定义一个类,以便它只在您首先使用它的翻译单元中可用?
(我问这个的原因是因为我正在学习 STL,它可能是我的谓词等(可能是函子)的一个很好的解决方案,因为我不喜欢定义成员以外的函数-cpp 文件中的函数)
(另外,我认为它在某种程度上与原始问题相关,因为根据我目前的推理,它会在函数之前做与 static 相同的事情)
编辑
看到一些答案时提出的另一个问题:
4) 很多人告诉我,我必须在头文件中声明静态函数,并在源文件中定义它。但是静态功能是翻译单元独有的。链接器如何知道哪个它是唯一的翻译单元,因为头文件不直接与源文件相关(仅当您包含它们时)?
【问题讨论】: