在 C++ 中调用初始化列表中的函数[重复]

问题描述 投票:0回答:2

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

所以,具体来说:

a.h:

class A
{
    Something d_member;
}

a.cpp

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

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

那么,使用该辅助函数来临时构建我的东西是否安全?其次,让它变得静态是否会更安全或更快速?

谢谢。

c++ initialization
2个回答
4
投票

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

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


1
投票

很安全。

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

© www.soinside.com 2019 - 2024. All rights reserved.