我有一个关于 C++ 良好设计的问题。我有一个 A 类,该类的所有对象都使用常量值的整数数组(它们应该共享相同的数组,因为它们的值是常量)。该数组需要在任何对象 A 之前计算(仅一次)。
我考虑过拥有另一个类B
,其中包含作为静态成员的整数数组,一个init()
方法,该方法将根据某些公式和a填充该数组static boolean flag initialized
(如果此变量为 true,则 init()
方法将不执行任何操作),但我不确定这是解决我的设计的最佳方法问题。
所以我的问题是,实现这一目标的良好设计/方法是什么?
提前致谢。
最佳答案
由于数组是常量,因此使用 const
。
由于该数组在类的所有实例之间共享,因此请使用static
。
在头文件中声明它:
class A
{
static const int the_array[10];
}
在 A 的源文件中,初始化一个实例:
const int A::the_array[10] = { ... };
编辑评论...
或者,如果通过算法更好地生成数组,请使用常量指针。数组的使用语法是相同的。
请注意,数组和指针都是const
。
标题:
class A
{
static const int * const the_array;
}
源文件:
namespace
{
const int * generate_my_array()
{
// Allocate an array, initialize it, return it.
}
}
const int * const A::the_array = generate_my_array();
关于c++ - 静态数组初始化的良好设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335539/