C++类中的常量介绍
C++ 介绍 常量 类中
2023-06-13 09:15:06 时间
由于#define定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用const修饰数据成员来实现。const数据成员的确是存在的,但其含义却不是我们所期望的。const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。
不能在类声明中初始化const数据成员。以下用法是错误的,因为类的对象未被创建时,编译器不知道SIZE的值是什么。
classA
{
constintSIZE=100; //错误,企图在类声明中初始化const数据成员
intarray[SIZE]; //错误,未知的SIZE
};
const数据成员的初始化只能在类构造函数的初始化表中进行,例如
**变量可以在构造函数的函数体中初始化
classA
{
A(intsize); //构造函数
constintSIZE;
};
A::A(intsize):SIZE(size) //构造函数的
{
}
A a(100);//对象a的SIZE值为100
A b(200);//对象b的SIZE值为200
怎样才能建立在整个类中都恒定的常量呢?以下介绍两种方法:
1.用类中的枚举常量来实现。例如
classA
{
enum{SIZE1=100,SIZE2=200};//枚举常量
intarray1[SIZE1];
intarray2[SIZE2];
};
枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是:它的隐含数据类型是整数,其最大值有限,且不能表示浮点数(如PI=3.14159)。
2.使用关键字
classA
{
staticconstintSIZE=100;
intarray[SIZE];
}
这将创建一个名为SIZE的常量,该常量将与其他静态变量存储在一起,而不是存储在某个对象中。因此,此常量将被整个类的所有对象共享。
相关文章
- C++学习——c++逗号操作符说明(附加全部运算符优先级)
- 把字符串转换成float类型_c++如何将string类型转换成int类型
- c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法「建议收藏」
- C++运算符重载(二)之左移运算符重载
- c++ auto类型_auto C++
- c++使用了未定义类型_c++如何新建
- C++和Java中static关键字的比较
- C++结构体和类的区别_c++有结构体吗
- c++的链表-链表入门(C++)
- C/C++ 进程代码注入&提权&降权
- C/C++ Qt 选择夹TabWidget组件应用
- 【C++ 语言】文件操作 ( fopen | fprintf | fscanf | fgets | fputc | fgetc | ofstream | ifstream )
- CLion 2023 Mac版-最好的C++ IDE下载
- 【C++】map、set、multimap、multiset的介绍和使用
- C++ basic_string(字符串类模板)详解
- C++多继承同名隐藏实例详细介绍
- C++中的单例模式介绍
- 深入分析:C++模板究竟会使代码膨胀吗
- C++开发:为什么多线程读写shared_ptr要加锁的详细介绍
- C++按位异或运算符的使用介绍
- C++异常处理catch(...)介绍
- C++流操作之fstream用法介绍
- C++中不能被重载的运算符介绍
- c#调用c++方法介绍,windowapi
- C++关键字inline详细介绍