2

我想知道以下是否安全,我需要将一些配置传递给我班级成员的初始化。我声明了一个辅助静态函数,它构建了在初始化成员时要传入的配置参数。

所以,具体来说:

啊:

class A
{
    Something d_member;
}

a.cpp

static Thing makeThing()
{
    Thing x;
    x.setValue(4);
    return x;
}

A::A() : d_member(makeThing()) {};

那么,使用该辅助函数来临时构建我的事物以进行构建是否安全。其次,将其设为静态是否更安全或更快?

谢谢。

4

2 回答 2

4

是的,这很好,值得鼓励。

假设静态部分不在类本身中并且似乎不在类中,那么静态部分所做的唯一事情就是给它“内部”链接。这意味着没有人可以在它所在的 .cpp 文件之外调用它......基本上(“翻译单元”是技术术语,但通常与单个 .cpp/.o 文件相同)

于 2013-03-13T21:00:30.913 回答
1

这是安全的。

static仅控制链接选项并降低符号的可见性。通常,您定义为static在模块之外不得可见/可用的任何功能。

于 2013-03-13T21:00:48.537 回答