c++ - 静态数组初始化的良好设计

标签 c++ api

我有一个关于 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/

相关文章:

c++ - 使用 boost C++ 从逆 Gamma 分布生成随机样本

c++ - 将 3 个 float 压缩为一个 uint64_t

c++ - bazel 创建临时文件失败

python - Face Plus Plus Python API更改参数

java - 尽管采取了建议的步骤,API 调用仍会引发 sslhandshakeException

C++ memset/memcpy/strcpy 实现 - 检查缓冲区溢出

c++ - 折叠表达式是否会短路?

python - facebook 图 API : Posting on page: permission issue

Java 2 API 导致 : Duplicate files copied in APK

javascript - 如何向外部 API 发出 GET 和 POST 请求?