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

Calling a Function in an Initialiser list in C++

本文关键字:函数 列表 调用 c++ 初始化      更新时间:2023-10-16

我想知道以下是否安全,我需要将一些配置传递到我的类中的成员的初始化中。我声明了一个helper静态函数,该函数构建在成员初始化时传入的配置参数。

,具体:

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用于构造是安全的吗?其次,让它保持静态会更安全或更快吗?

谢谢。

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

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

安全。

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