私有成员:静态const与仅const

tri*_*ker 10 c++

我正在尝试确定当一个对象有一些不会改变的特征时,最好的选择是什么,并且在整个函数中都需要它.

  1. 静态const成员
  2. Const成员

在我看来,静态成员的真正原因是拥有一个可以更改的变量,从而影响同一个类的所有其他对象.但是,我有人建议将类"不变量"作为静态const成员.我正在寻找有关建立类常量的推荐方法的一些见解,以及原因.

AnT*_*AnT 16

"不会改变"不够精确.这里的主要问题是类的不同对象是否需要具有这些const成员的不同值(即使它们在对象的生命周期内不会改变),或者所有对象都应该使用(共享)相同的值.

如果该类的所有对象的值相同,那么它当然应该是static const该类的成员.

如果不同的对象可能需要不同的值,那么它应该只是一个非静态const成员.

  • 在这种情况下,你没有理由不使它成为"静态const".非静态const也可以起作用(除了一些特定/奇特的情况),但它会导致不必要的内存浪费. (3认同)

Dus*_*tin 15

一个const成员时,应使用该成员未在每个实例进行改变.甲static const构件时,应使用该成员不基于每个类基础改变.换句话说,无论您创建多少个实例,该static const成员在所有实例之间保持固定,而该const成员仅对特定实例保持不变.

我不确定这是不是你要找的东西,因为这只是对它们行为方式的解释,但我希望它有所帮助.