在 C++ 中,标记为 static
的成员由给定类的所有实例共享。是否私有(private)并不影响一个变量被多个实例共享这一事实。如果有任何代码试图修改它,在那里设置 const 会警告您。
如果它是严格的private
,那么类的每个实例都会有自己的版本(尽管有优化器)。
^这就是我读到的here .我的问题是,为什么使用 static const int
而不是将所需的变量放在 private
中会更好?我知道每个对象都会有自己的对象,但为什么不好?
最佳答案
您用“尽管有优化器”暗示了自己的答案。相信编译器并以清晰为目标。
事实上你在这里是正确的,还要注意更强的条件,即尝试修改声明为 const
的变量的行为是未定义。因此,您不能使用 const_cast
和指针 &c 解决这个问题。
做任何感觉最自然的事情。是的,它是主观的,但对于它的值(value),我倾向于使用 private
自动变量而不是 private
static
变量,因为 (i) 它更对称, (ii) 重构为 protected
或 public
更简单,并且 (iii) private
成员与基本成员初始化配合得更好。
关于c++ - 如果可以将其置于私有(private)状态,为什么还要使用 static const (int/string/..)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43868148/