- 浏览: 37032 次
- 性别:
- 来自: 上海
最近访客 更多访客>>
最新评论
-
shi5jin:
呵呵,我看的是Effective C++第三版,第一个item ...
站在巨人肩上的思考[连载] (5) -
bigpanda:
欢迎讨论远程数据库和rpc的编程。
“《Effective ...
站在巨人肩上的思考[连载] (5) -
spinach:
读完这两节,我基本就一个字,“基本帅呆了”。
站在巨人肩上的思考 [连载] (3) -
spinach:
终于等到了,慢慢看。
站在巨人肩上的思考 [连载] (2) -
spinach:
期待下文
站在巨人肩上的思考 [连载] (1)
4.8 枚举
枚举是表示具有共同属性的整型常量集合的用户自定义类型。这其中包含这些含义:
1. 枚举的取值只能是整数,正负皆可;
2. 枚举的取值是常量,枚举初始化后,这些值不能被改变;
3. 枚举也是一种用户自定义类型,用户定义好枚举后,可以自定义该枚举类型自身的操作,如“++”,“<<”等;
<o:p> </o:p>
枚举类型的取值隐含着这样的“潜规则”:
l 如果枚举中所有枚举值均非负,那么该枚举表示的范围,是包含这些枚举值的所有[0, 2k-1]区间中最小的那个;
l 如果枚举中包含负枚举值,那么该枚举表示的范围,是包含这些枚举值的所有[-2k, 2k-1]区间中最小的那个;
l 枚举的sizeof,就是某个能容纳其范围的整型的sizeof,但不会大于sizeof(int);
l 如果不显式的复制,那么默认枚举值将从0开始递增;
例如:
<v:shapetype id="_x0000_t202" path="m,l,21600r21600,l21600,xe" o:spt="202" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:path o:connecttype="rect" gradientshapeok="t"></v:path></v:shapetype><v:shape id="_x0000_s1027" style="WIDTH: 374.2pt; HEIGHT: 75.7pt; mso-height-percent: 200; mso-position-horizontal-relative: char; mso-position-vertical-relative: line; mso-width-relative: margin; mso-height-relative: margin" strokeweight="1pt" strokecolor="#95b3d7" type="#_x0000_t202"><v:fill type="gradient" focus="100%" focussize="" focusposition="1" color2="#b8cce4"></v:fill><v:shadow opacity=".5" type="perspective" offset2="-3pt" offset="1pt" color="#243f60" on="t"></v:shadow><v:textbox style="mso-fit-shape-to-text: t">
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]当中; |
<o:p> </o:p>
第5章 指针、数组和结构
5.1 指针
5.1.1 零
“由于各种标准转换,0可以被用于作为任意整型、浮点类型、指针、还有指向成员的指针的常量。”[1]<o:p></o:p>
“0的类型将由上下文确定”[2]<o:p></o:p>
为更好的保证类型安全,建议在C++中用0代替所有的NULL。如果不得不使用NULL,那么用下面的妥协方案:
<v:shape id="_x0000_s1026" style="WIDTH: 374.2pt; HEIGHT: 70.85pt; mso-position-horizontal-relative: char; mso-position-vertical-relative: line; mso-width-relative: margin; mso-height-relative: margin" strokeweight="1pt" strokecolor="#95b3d7" type="#_x0000_t202"><v:fill type="gradient" focus="100%" focussize="" focusposition="1" color2="#b8cce4"></v:fill><v:shadow opacity=".5" type="perspective" offset2="-3pt" offset="1pt" color="#243f60" on="t"></v:shadow><v:textbox>
#ifndef _DEF_NULL_ #define _DEF_NULL_ const int NULL = 0; #endif |
[1] 《The C++ Programming Language》-- Chapter 5.1.1, paragraph 1
[2] 《The C++ Programming Language》-- Chapter 5.1.1, paragraph 1
发表评论
-
站在巨人肩上的思考[连载] (8)
2007-12-03 14:58 11215.2 数组 5.2.2 字符串文字量 ... -
一种“标准”的虚函数机制简介
2007-11-09 11:07 1238编译器是如何针对虚函数产生可以再运行时刻确定被调用函数 ... -
A Generic Ostream Iterator
2007-09-07 08:37 1320by Christopher Diggins November ... -
我能从构造函数调用虚函数吗?
2007-09-06 11:18 2738可以。不过你得悠着点 ... -
为何我的构造函数不太对劲?
2007-09-06 10:57 1144类似这样的问题千奇百怪。例如: ... -
如何在类中定义常量?
2007-09-06 10:51 2492如果你想得到一个可用 ... -
为何空类的大小不是零?
2007-09-06 10:46 1851为了确保两个不同对象的地址不同,必须如此。也正因为如此,new ... -
我应该怎样处理内存泄漏?
2007-09-06 10:43 938很 简单,只要写“不漏 ... -
您可以推荐一种编写代码的标准吗?
2007-09-06 10:36 1288C++ 代码编写标准的要点是:根据使用 C++ 的具体的 ... -
如何使用异常?
2007-09-05 09:34 978请参考 TC++PL 章节 8.3、第十四章,以及附录 E。附 ... -
为何C++既有指针也有引用?
2007-09-05 09:28 863C++ 的指针继承于 C,若要移除指针,势必造成严重的兼容性 ... -
可以在构造函数里抛出异常吗?析构函数里呢?
2007-09-05 09:24 2314可以:当你不能正常地初始化(构造)对象时,你应该在 ... -
站在巨人肩上的思考[连载] (6)
2007-05-04 09:31 1925第4章 类型和声明 4.3 字符类型 “由8 ... -
站在巨人肩上的思考[连载] (5)
2007-04-23 19:40 2323最近做个小项目,有点忙。事情倒是不难,就是有点杂, ... -
站在巨人肩上的思考[连载] (4)
2007-04-10 11:13 1789首先感谢 spinach 的鼓励与支持。你给了我很大的动力, ... -
站在巨人肩上的思考 [连载] (3)
2007-04-09 08:36 2157上一篇中,主要是对C++类设计的一个概览。如果 ... -
站在巨人肩上的思考 [连载] (2)
2007-04-07 11:23 2099<st1:chmetcnv tcsc=" ... -
站在巨人肩上的思考 [连载] (1)
2007-04-06 08:20 2135[原创。欢迎复制。转载请您注明出处 -- Gavin] Tip ...
相关推荐
20210531-华金证券-卓越商企服务-6989.HK-站在巨人肩膀上的商务物管领军企业.pdf
八年级物理全册1.3站在巨人的肩膀上我国的四大发明素材新版沪科.doc
绿洲APP产品分析报告:站在巨人肩膀上能否看得更远?.pdf
家用电器行业深度:小米集团:站在 “巨人们”的肩膀上看世界.pdf
站在巨人的肩膀上,_迁移学习_Transfer_Learning
站在巨人的肩膀上-scrollView联动
读完本书,受益匪浅,与大家共享!!! 让我们站在巨人的肩膀上。
前辈对错误的总结,让你站在巨人的肩膀上走的更远
使用Java语言开发,站在巨人肩膀上制作了异步非阻塞的IM,采用官方协议适配器解决一台服务器可解决http、websocket、tcp(可以私有定制)的多协议通讯.zip
巨人肩上新巨人.doc
站在巨人的肩上——XX借势营销策划.doc
站在巨人的肩上泛德林恩借势营销策划.docx
站在巨人的肩膀上的项目,感谢zhile大佬的Pandora-Next项目.zip
站在巨人的肩上--泛德林恩借势营销策划.doc
使用Java语言开发,站在巨人肩膀上制作了异步非阻塞的IM,采用官方协议适配器解决一台服务器可解决http、websocket、tcp(可以私有定制)的多协议通讯.zip
八年级物理全册第一章第三节站在巨人的肩膀上教学课件新版沪科版
站在巨人的肩膀上:分层设计在 Nervos 生态系统中的 layer 2区块链上的实际应用-SACC2021年中国系统架构师大会
背靠开放平台 如何在巨人肩膀上把握市场机.docx
20210706-浦银国际-宝胜国际-3813.HK-站在巨人的肩膀上;利润率改善空间大.pdf
八年级物理全册 1.3 站在巨人的肩膀上 我国的四大发明素材 (新版)沪科版(通用).doc