我想知道以下内容是否安全,我需要将一些配置传递到类中成员的初始化中。我声明了一个辅助静态函数,用于构建在初始化成员时传入的配置参数。
所以,具体来说:
a.h:
class A
{
Something d_member;
}
a.cpp
static Thing makeThing()
{
Thing x;
x.setValue(4);
return x;
}
A::A() : d_member(makeThing()) {};
那么,使用该辅助函数来临时构建我的东西是否安全?其次,让它变得静态是否会更安全或更快速?
谢谢。
是的,这很好,值得鼓励。
静态部分唯一做的事情就是给它“内部”链接,假设它不在类本身中,而且看起来也不在类本身中。这意味着没有人可以在它所在的 .cpp 文件之外调用它......基本上(“翻译单元”是技术术语,但通常与单个 .cpp/.o 文件相同)
很安全。
static
仅控制链接选项并降低符号的可见性。通常,您将任何在模块外部不可见/不可用的函数定义为 static
。