我在整个代码中都需要一些小的帮助函数。为了工作,它们需要用一些数据初始化一次。我应该在哪里存储初始化数据?
我想出了两种方法:
我在 helper.cpp 文件的范围内创建静态变量,我使用专用的 setter 函数设置该文件,然后在我的 helper 函数中使用。
static int _initData = 0;
void initHelpMe(int initData)
{
_initData = initData;
}
void helpMe()
{
doSomethingWith(_initData);
}
或者我在原始辅助函数中使用静态函数变量和它的默认参数。
void helpMe(int initData = 0)
{
static int _initData = 0;
if (initData != 0)
_initData = initData;
doSomethingWith(_initData);
}
(假设 0 超出了 initData 的有效数据范围,并且我没有显示其他代码来确保在第一次调用该函数而不先启动它时引发错误。)
这两种方法的优点/缺点是什么,是否有更好的方法?
我当然喜欢第二种方法,因为它将所有功能都保存在一个地方。但我已经知道它不是线程安全的(这不是问题 atm)。
而且,为了使这更有趣,尽管它是 C++,但它不是用于面向对象的,而是用于过程代码。所以请不要回答提出对象或类的问题。想象一下它是具有 C++ 语法的 C。