在C ++中调用初始化列表中的函数

时间:2013-03-13 20:58:09

标签: c++ initialization

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

所以,具体来说:

a.h:

class A
{
    Something d_member;
}

a.cpp

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

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

因此,使用该辅助函数暂时构建我的Thing进行构造是否安全。其次,是否让它更安全或更快才能保持静止?

感谢。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

这是安全的。

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