什么是在C ++中使用const变量成员?

时间:2015-06-07 18:43:19

标签: c++ const

是否存在const变量成员在C ++中有用的场景?

如果要创建一个不可变类,通常的方法是使用只有const的const函数来声明私有成员来访问它们的值。这具有可以复制分配类等的优点。因此,在这种情况下,您不需要const变量成员。

另一方面,如果类具有const成员变量,则它不会获得自动复制赋值运算符。我没有看到一个有用的场景。

2 个答案:

答案 0 :(得分:2)

const数据成员的主要优点与引用成员相同(实际上引用可以被认为是const指针),即它强制初始化,除非该成员属于具有用户定义的默认构造函数的类型。编译器将坚持初始化。尽管如此,我还没有发现那么有用,以至于我已经开始这么做了。

另一种选择,如果保证初始化是你想要的,就是将数据成员包装在一个不提供默认构造的类中。使用这种方法,如果数据成员支持赋值,则可以将其分配给。

const数据成员的另一个优点是它表示预期约束,并且编译器检查,并且几乎总是好的。对值如何变化的限制越多,就越不需要考虑理解或调试代码。

答案 1 :(得分:0)

初始化变量const后,您永远无法重新初始化它。以后每次尝试重新初始化const变量都会产生编译错误。

如果您想要防止意外修改某些您永远不想更改的变量,这将非常有用。像数学一样,我们需要PI,我们可以将它声明为常量 -

private const double PI = 3.1416;