【发布时间】:2013-08-23 10:27:40
【问题描述】:
我在整个代码中都需要一些小的帮助函数。 为了工作,它们需要用一些数据初始化一次。 我应该将初始化数据存储在哪里?
我想出了两种方法:
我在 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 的有效数据范围,并且我没有显示其他代码以确保在第一次调用该函数而不先启动它时引发错误。)
这两种方法的优点/缺点是什么?有更好的方法吗?
我当然喜欢第二种方法,因为它将所有功能都集中在一个地方。但我已经知道它不是线程安全的(这不是上午的问题)。
而且,为了让这更有趣,尽管它是 C++,但它不是用于面向对象的,而是用于过程代码。所以请不要回答提出对象或类的问题。想象一下它是具有 C++ 语法的 C。
【问题讨论】:
标签: c++ c static initialization global-variables