c++ - 如果可以将其置于私有(private)状态,为什么还要使用 static const (int/string/..)?

标签 c++ class static constants private

在 C++ 中,标记为 static 的成员由给定类的所有实例共享。是否私有(private)并不影响一个变量被多个实例共享这一事实。如果有任何代码试图修改它,在那里设置 const 会警告您。

如果它是严格的private,那么类的每个实例都会有自己的版本(尽管有优化器)。

^这就是我读到的here .我的问题是,为什么使用 static const int 而不是将所需的变量放在 private 中会更好?我知道每个对象都会有自己的对象,但为什么不好?

最佳答案

您用“尽管有优化器”暗示了自己的答案。相信编译器并以清晰为目标。

事实上你在这里是正确的,还要注意更强的条件,即尝试修改声明为 const 的变量的行为是未定义。因此,您不能使用 const_cast 和指针 &c 解决这个问题。

做任何感觉最自然的事情。是的,它是主观的,但对于它的值(value),我倾向于使用 private 自动变量而不是 private static 变量,因为 (i) 它更对称, (ii) 重构为 protectedpublic 更简单,并且 (iii) private 成员与基本成员初始化配合得更好。

关于c++ - 如果可以将其置于私有(private)状态,为什么还要使用 static const (int/string/..)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43868148/

相关文章:

c++ - Qt:关闭期间的事件循环

c++ - GCC 编译器错误 : unrecognized option '--export-dynamic'

ios - 如何在 Swift 的另一个类中设置变量值

java - 按钮功能不起作用?

c++ - "static const int"导致链接错误( undefined reference )

c++ - 非常奇怪的 stringstream 和 std::getline 行为

c++ - 加载共享库 : cv2. 时出错,因此对 C++ 应用程序使用 php exec()。在网络应用程序上

c++ - 防止虚函数在子类中重载两次

java - 如何用相似但不同的对象填充列表?

java - 不能从静态上下文中引用非静态方法