【发布时间】:2017-02-12 15:39:49
【问题描述】:
我有一个具有std::map 类型成员的类。这个map是通过调用这个类的一个方法makeMap()创建的。它读取一个配置文件并填充map。
在我的场景中,我创建了这个类的一个实例并构造了map。然后递归地解决一些问题,涉及对象的许多副本。但map 保持不变(其他一些成员发生了变化)。
这样的map 应该是static const 吗?由于它在创建后不会更改,并且可以在创建第一个实例时完成创建,因此在复制实例时复制 map 是没有意义的。
static const 好用吗?
【问题讨论】:
-
所有类实例都一样吗?
-
是的,它是创建一次然后复制的。这个没有其他用处。
-
const - 表示它不会改变; static - 意味着类的所有实例都有一个版本。听起来这正是你想要的。
-
@UKMonkey:如果是
const,它在创建后无法更改,因此 OP 描述的makeMap()将不起作用。如果地图在某个时候应该变为只读,则应首先根据标志检查对其的突变。 -
@AndyG: 或者它是用复制构造函数制作的——或者它是一个指针。