站在巨人肩上的思考[连载] (7)
关键字: TC++PL4.8 枚举
枚举是表示具有共同属性的整型常量集合的用户自定义类型。这其中包含这些含义:
1. 枚举的取值只能是整数,正负皆可;
2. 枚举的取值是常量,枚举初始化后,这些值不能被改变;
3. 枚举也是一种用户自定义类型,用户定义好枚举后,可以自定义该枚举类型自身的操作,如“++”,“<<”等;
枚举类型的取值隐含着这样的“潜规则”:
l 如果枚举中所有枚举值均非负,那么该枚举表示的范围,是包含这些枚举值的所有[0, 2k-1]区间中最小的那个;
l 如果枚举中包含负枚举值,那么该枚举表示的范围,是包含这些枚举值的所有[-2k, 2k-1]区间中最小的那个;
l 枚举的sizeof,就是某个能容纳其范围的整型的sizeof,但不会大于sizeof(int);
l 如果不显式的复制,那么默认枚举值将从0开始递增;
例如:
enum Flags { A=1, B=2, C=9,D=7}; //Flags的取值范围是[0, 15]; Flags f1 = 5; //错误!没有定义从int到Flags的隐式类型转换; Flags f2 = Flags(14); //可以,利用显式的类型转换,而且14在[0,15]中; //虽然在Flags的定义当中没有14这个值; Flags f3 = Flags(21); //错误!21不在[0, 15]当中;
第5章 指针、数组和结构
5.1 指针
5.1.1 零
“由于各种标准转换,0可以被用于作为任意整型、浮点类型、指针、还有指向成员的指针的常量。”[1]
“0的类型将由上下文确定”[2]
为更好的保证类型安全,建议在C++中用0代替所有的NULL。如果不得不使用NULL,那么用下面的妥协方案:
#ifndef _DEF_NULL_ #define _DEF_NULL_ const int NULL = 0; #endif
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 9946 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
站在巨人肩上的思考[连载 ...
呵呵,我看的是Effective C++第三版,第一个item。 对,就是那四句 ...
-- by shi5jin -
站在巨人肩上的思考[连载 ...
欢迎讨论远程数据库和rpc的编程。 “《Effective C++》的开篇点题 ...
-- by bigpanda -
站在巨人肩上的思考 [连载 ...
读完这两节,我基本就一个字,“基本帅呆了”。
-- by spinach -
站在巨人肩上的思考 [连载 ...
终于等到了,慢慢看。
-- by spinach -
站在巨人肩上的思考 [连载 ...
期待下文
-- by spinach






评论排行榜