常量变量成员在C++有什么用?
What's the use of const variable members in C++?
是否存在const变量成员在c++中有用的情况?
如果你想创建一个不可变的类,通常的方法是用get-only const函数声明私有成员来访问它们的值。这样做的好处是类可以被复制赋值等等。因此,在这种情况下,不需要const变量成员。
另一方面,如果类具有const成员变量,则不会获得自动复制赋值操作符。const
数据成员的一个主要优点与引用成员相同(实际上引用可以被看作是const
指针),即它强制初始化,除非该成员的类型具有用户定义的默认构造函数。编译器将坚持初始化。然而,我从来没有发现它如此有用,所以我开始这样做。
如果需要保证初始化,另一种选择是将数据成员包装在不提供默认构造的类中。使用这种方法,如果数据成员支持赋值,则可以对其进行赋值。
(const
数据成员)的另一个优点是它表达了预期的约束,并带有编译器检查,这几乎总是好的。关于值如何改变的约束越多,需要理解或调试代码的考虑就越少。
一旦初始化了变量const
,就永远不能重新初始化它。以后每次尝试重新初始化const
变量都会产生编译错误。
当您希望防止意外修改某些您不想更改的变量时,它是有用的。就像在数学中我们需要PI一样,我们可以将它声明为常数-
private const double PI = 3.1416;
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- ifstream什么都没读
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 我应该使用什么来代替void作为变体中的替代类型之一
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用