是否存在const变量成员在C ++中有用的场景?
如果要创建一个不可变类,通常的方法是使用只有const的const函数来声明私有成员来访问它们的值。这具有可以复制分配类等的优点。因此,在这种情况下,您不需要const变量成员。
另一方面,如果类具有const成员变量,则它不会获得自动复制赋值运算符。我没有看到一个有用的场景。
答案 0 :(得分:2)
const
数据成员的主要优点与引用成员相同(实际上引用可以被认为是const
指针),即它强制初始化,除非该成员属于具有用户定义的默认构造函数的类型。编译器将坚持初始化。尽管如此,我还没有发现那么有用,以至于我已经开始这么做了。
另一种选择,如果保证初始化是你想要的,就是将数据成员包装在一个不提供默认构造的类中。使用这种方法,如果数据成员支持赋值,则可以将其分配给。
const
数据成员的另一个优点是它表示预期约束,并且编译器检查,并且几乎总是好的。对值如何变化的限制越多,就越不需要考虑理解或调试代码。
答案 1 :(得分:0)
初始化变量const
后,您永远无法重新初始化它。以后每次尝试重新初始化const
变量都会产生编译错误。
如果您想要防止意外修改某些您永远不想更改的变量,这将非常有用。像数学一样,我们需要PI,我们可以将它声明为常量 -
private const double PI = 3.1416;