读书频道 > 网站 > 网页设计 > 大规模C++程序设计
2.3.3 枚举、typedef和常量数据
15-04-27    下载编辑
收藏    我要投稿   

本文所属图书 > 大规模C++程序设计

《大规模C++程序设计》由世界级软件开发大师John Lakos亲笔撰写,是C++程序设计领域最有影响力的著作之一。作者结合自己多年从事大规模C++项目的开发经验,详细介绍了大规模C++程序设计涉及的一系列概念、理论、立即去当当网订购

枚举类型、typedef和(默认的)文件作用域常量数据都有内部链接。人们经常在头文件的文件作用域内声明常量、枚举或typedef,这是错误的。

主要设计规则

避免在.h文件的文件作用域内使用枚举、typedef和常量数据。

因为C++完全支持嵌套类型,所以在一个类的作用域内定义的枚举(和typedef声明)不会和全局名字空间中的其他名字冲突。通过选择在一个更有限的作用域内定义一个枚举,可以确保枚举类型的所有枚举成员作用域都类似,并且不会与在作用域之外定义的其他名字冲突。

请看下面这个枚举:


 

这两个枚举可能不是同一个开发者写的,但是很可能在某一天包含在同一个文件中,导致ORANGE有二义性,无法解析!


 

如果在单独的类中定义这两个枚举,我们就可以很容易地使用域解析消除二义性问题:

Paint::Orange或Juice::Orange。

基于类似的原因,typedef和常量数据也应该放在头文件的类作用域内。大多数常量数据是整型的,并且嵌套枚举可以很好地在类的作用域中提供整型常量。其他的常量类型(如double、String)必须是类的静态成员,并且在.c文件中初始化:


 

在大型项目中,除了全局名称冲突外,还有在文件作用域中寻找枚举、typedef和常量等非常现实的问题。在一个类内嵌套一个typedef迫使名称被完全限定(或声明被继承),使得该名称相对容易查找。同样的思路可应用于枚举,我们已经提出了支持在类中嵌套枚举的更有力论据。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站