博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++类中的枚举
阅读量:4106 次
发布时间:2019-05-25

本文共 781 字,大约阅读时间需要 2 分钟。

有时我们希望某些常量只在类中有效。
  由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。 
  不能在类声明中初始化 const 数据成员。以下用法是错误的,因为类的对象未被创建时,编译器不知道 SIZE 的值是什么。 
class  A 
{
  const int SIZE = 100;   // 错误,企图在类声明中初始化 const 数据成员 
  int array[SIZE];  // 错误,未知的 SIZE 
}

const 数据成员的初始化只能在类构造函数的初始化表中进行,例如

**变量可以在构造函数的函数体中初始化

class  A 
{
  A( int  size);   //  构造函数 
   const   int  SIZE ;    
}; 
A::A( int  size) : SIZE(size)   //  构造函数的
A  a( 100 );  //  对象 a 的 SIZE 值为 100 
A  b( 200 );  //  对象 b 的 SIZE 值为 200 

  怎样才能建立在整个类中都恒定的常量呢?别指望 const 数据成员了,应该用类中的枚举常量来实现。例如 

class  A 
{
   enum  { SIZE1  =   100 , SIZE2  =   200 };  //  枚举常量
   int  array1[SIZE1];  
   int  array2[SIZE2]; 
}; 

  枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是:它的隐含数据类型是整数,其最大值有限,且不能表示浮点数(如 PI=3.14159) 。

你可能感兴趣的文章
CentOS 7 使用阿里云的yum源
查看>>
php-fpm的配置和优化
查看>>
php-fpm 与 Nginx优化总结
查看>>
实时查看及监控PHP-FPM的运行状态
查看>>
阿里云CentOS7挂载SSD云盘的方法
查看>>
CentOS 7 NFS服务器和客户端设置
查看>>
git 打标签并推送tag到托管服务器
查看>>
SecureCRT优化颜色配置,及配置文件保存/导入
查看>>
Nginx反向代理配置
查看>>
centos7安装配置memcached
查看>>
MySQL 5.7 深度解析: 半同步复制技术
查看>>
国内版魅族pro5刷ubuntu教程
查看>>
Git删除远程分支
查看>>
Android中so使用知识和问题总结以及插件开发过程中加载so的方案解析
查看>>
MySQL 数据库增量数据恢复案例
查看>>
Linux tcpdump命令详解
查看>>
MySQL mysqldump数据导出详解
查看>>
自动远程拷贝expect脚本
查看>>
Python实现文件的全备份和差异备份
查看>>
sqlmap常用命令语句
查看>>