- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C程序设计第十六章NSIC标准语法补充
C++程序设计
第16章 ANSI C++标准语法补充
大多数C++语言系统都支持ANSI/ISO C++标准。本章介绍该标准中的部分内容,作为前面各章节的语法补充。本章将介绍逻辑型bool、命名空间namespace、两个修饰符explicit和mutable、运行时刻类型信息RTTI和typeid运算符、以及4种新型的强制类型转换运算符。本章各部分之间相对独立,相互之间没有严格次序。
16.1 逻辑型bool
C语句中没有逻辑类型,而C++标准有逻辑型bool。逻辑型也被称为布尔型。逻辑值只有真true和假false两个值,而且只能进行逻辑运算。C语言用整数int来表示逻辑值,0值表示false,非0为true。整数表示逻辑值的缺点是算术运算的结果可直接作为逻辑值,而且“逻辑值”也可进行算术运算,这不符合高级编程语言的要求。
C++可定义bool类型变量,可直接赋值true或false,可作为关系表达式和逻辑表达式的计算结果。bool类型变量支持逻辑运算非!、与、或||运算。一个bool值在内存中占1字节,故此sizeof(bool)为1。但内部采用整数值0表示false,1表示true。
例16-1逻辑型bool的例子。
#include iostream
#include iomanip
using namespace std;
void main(){
bool boolean = false;
int x = 0;
coutboolean is boolean
\nEnter an integer:;
cin x;
coutinteger x is
(x ? nonzero:zero)
and interpreted as ;
if (x)
couttrue\n;
else
coutfalse\n;
bool b = true;
boolean = false b;
coutboolean is boolean;
cout\nboolean output with boolalpha manipulator is
boolalphabooleanendl;
coutsizeof(boolean)=sizeof(bool)endl;
boolean = x * 3 10;
if (boolean)
cout x * 3 10endl;
else
cout x * 3 = 10endl;
}
执行程序,输入45,输出结果如下:
boolean is 0
Enter an integer:45
integer 45 is nonzero and interpreted as true
boolean is 0
boolean output with boolalpha manipulator is false
sizeof(boolean)=1
x * 3 10
本质上bool类型仍然是一个整型值。在cout输出时,仍然输出0或1,而不是false或true,除非用boolalpha作为格式控制符。另一个需要注意的是bool类型变量仍然可以进行算术运算,例如:
bool b2 = true, b3 = false;
bool b4 = b2 - b3; //bool型变量之间不应该允许算术运算。
对上面语句,编译器仅给出警告而不是错误。
但无论如何,引入bool类型本身就是一种改进,建议在C++程序中尽可能采用bool类型。
16.2 命名空间namespace
命名空间(namespace)是解决大程序中多个元素(如类、全局函数和全局变量)命名冲突的一种机制。当我们要把几个部分(往往来自不同的人员或团队)合并成为一个大程序时,往往就会出现命名冲突的问题:类名、全局函数名、全局变量名都可能重名。解决的方法就是把这些名字放在不同的命名空间中,在访问这些名字时使用各自的命名空间作为限定符。
16.2.1 命名空间的定义
命名空间类似文件系统中的目录,空间中的成员类似目录中的文件。全局空间相当根目录,一个目录名作为其中多个文件的命名空间,子目录作为嵌套空间,文件作为空间中的成员。同时一个命名空间也是一个作用域。
命名空间的基本规则如下:
一个程序所用的多个命名空间在相同层次上不重名;
在同一个命名空间中的所有成员名字不重复;
在一个命名空间中可以嵌套定义其内层的多个子空间。
定义命名空间的语法格式如下:
namespace [空间名{一组成员}
namespace Example{ //说明了一个Example空间
const double PI = 3.14159; //Example中的变
您可能关注的文档
- 2016编辑记者证综合知识考试资料(按大纲整理).doc
- 2016考研政治马哲唯物辩证法记忆方法.docx
- 2016年高考二轮复习物理第二部分专题限时训练14电磁感应定律的综合应用(二).doc
- 2016考研英语三大途径提高阅读能力.doc
- 2016深圳公务员面试如何作答令人抓狂的面试人际关系题.docx
- 2016考研英语贬义词词汇大全.docx
- 2016语法讲义部分句子参考译文节选.doc
- 2017国家公务员考试申论热点分析“四风”问题隐形变异.docx
- 2017年四川省科技计划项目申报指南2高新技术发展与产业化重点研发项目申报指南.docx
- 2017年福建公务员考试申论热点分析“四风”问题隐形变异.doc
文档评论(0)