欢迎来到天天文库
浏览记录
ID:57337850
大小:696.10 KB
页数:13页
时间:2020-08-12
《C程序设计第十六章NSIC标准语法补充.pdf》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C++程序设计第16章ANSIC++标准语法补充大多数C++语言系统都支持ANSI/ISOC++标准。本章介绍该标准中的部分内容,作为前面各章节的语法补充。本章将介绍逻辑型bool、命名空间namespace、两个修饰符explicit和mutable、运行时刻类型信息RTTI和typeid运算符、以及4种新型的强制类型转换运算符。本章各部分之间相对独立,相互之间没有严格次序。16.1逻辑型boolC语句中没有逻辑类型,而C++标准有逻辑型bool。逻辑型也被称为布尔型。逻辑值只有真true和假f
2、alse两个值,而且只能进行逻辑运算。C语言用整数int来表示逻辑值,0值表示false,非0为true。整数表示逻辑值的缺点是算术运算的结果可直接作为逻辑值,而且“逻辑值”也可进行算术运算,这不符合高级编程语言的要求。C++可定义bool类型变量,可直接赋值true或false,可作为关系表达式和逻辑表达式的计算结果。bool类型变量支持逻辑运算非!、与&&、或
3、
4、运算。一个bool值在内存中占1字节,故此sizeof(bool)为1。但内部采用整数值0表示false,1表示true。例16-1
5、逻辑型bool的例子。#include#includeusingnamespacestd;voidmain(){boolboolean=false;intx=0;cout<<"booleanis"<>x;cout<<"integer"<6、<"false";boolb=true;boolean=false&&b;cout<<"booleanis"<10;if(boolean)cout<<"x*3>10"<7、0"<10本质上bool类型仍然是一个整型值。在cout<<输出时,仍然输出0或1,而不是false或true,除非用boolalpha作为格式控制符。另一个需要注意的是bo8、ol类型变量仍然可以进行算术运算,例如:boolb2=true,b3=false;boolb4=b2-b3;//bool型变量之间不应该允许算术运算。对上面语句,编译器仅给出警告而不是错误。但无论如何,引入bool类型本身就是一种改进,建议在C++程序中尽可能采用bool类型。16.2命名空间namespace命名空间(namespace)是解决大程序中多个元素(如类、全局函数和全局变量)命名冲突的一种机制。当我们要把几个部分(往往来自不同的人员或团队)合并成为一个大程序时,往往就会出现命名冲突的9、问题:类名、全局函数名、全局变量名都可能重名。解决的方法就是把这些名字放在不同的命名空间中,在访问这些名字时使用各自的命名空间作为限定符。16.2.1命名空间的定义命名空间类似文件系统中的目录,空间中的成员类似目录中的文件。全局空间相当根目录,一个目录名作为其中多个文件的命名空间,子目录作为嵌套空间,文件作为空间中的成员。同时一个命名空间也是一个作用域。命名空间的基本规则如下:一个程序所用的多个命名空间在相同层次上不重名;在同一个命名空间中的所有成员名字不重复;在一个命名空间中可以嵌套定义其10、内层的多个子空间。定义命名空间的语法格式如下:namespace[<空间名>]{一组成员}其中,namespace是关键字,后面给出一个空间的名字标识符。后面用花括号括起来一组成员,可以是一组类、一组函数、一组变量。如果空间名缺省则为无名空间。无名空间中的元素类似于全局变量,只是限制在本文件中访问,而全局空间中的成员可以被其它文件访问。命名空间可嵌套说明,就如同目录与子目录之间的关系。例如下面代码:intmyInt=98;//全局空间中的变量namespaceExample{//说
6、<"false";boolb=true;boolean=false&&b;cout<<"booleanis"<10;if(boolean)cout<<"x*3>10"<7、0"<10本质上bool类型仍然是一个整型值。在cout<<输出时,仍然输出0或1,而不是false或true,除非用boolalpha作为格式控制符。另一个需要注意的是bo8、ol类型变量仍然可以进行算术运算,例如:boolb2=true,b3=false;boolb4=b2-b3;//bool型变量之间不应该允许算术运算。对上面语句,编译器仅给出警告而不是错误。但无论如何,引入bool类型本身就是一种改进,建议在C++程序中尽可能采用bool类型。16.2命名空间namespace命名空间(namespace)是解决大程序中多个元素(如类、全局函数和全局变量)命名冲突的一种机制。当我们要把几个部分(往往来自不同的人员或团队)合并成为一个大程序时,往往就会出现命名冲突的9、问题:类名、全局函数名、全局变量名都可能重名。解决的方法就是把这些名字放在不同的命名空间中,在访问这些名字时使用各自的命名空间作为限定符。16.2.1命名空间的定义命名空间类似文件系统中的目录,空间中的成员类似目录中的文件。全局空间相当根目录,一个目录名作为其中多个文件的命名空间,子目录作为嵌套空间,文件作为空间中的成员。同时一个命名空间也是一个作用域。命名空间的基本规则如下:一个程序所用的多个命名空间在相同层次上不重名;在同一个命名空间中的所有成员名字不重复;在一个命名空间中可以嵌套定义其10、内层的多个子空间。定义命名空间的语法格式如下:namespace[<空间名>]{一组成员}其中,namespace是关键字,后面给出一个空间的名字标识符。后面用花括号括起来一组成员,可以是一组类、一组函数、一组变量。如果空间名缺省则为无名空间。无名空间中的元素类似于全局变量,只是限制在本文件中访问,而全局空间中的成员可以被其它文件访问。命名空间可嵌套说明,就如同目录与子目录之间的关系。例如下面代码:intmyInt=98;//全局空间中的变量namespaceExample{//说
7、0"<10本质上bool类型仍然是一个整型值。在cout<<输出时,仍然输出0或1,而不是false或true,除非用boolalpha作为格式控制符。另一个需要注意的是bo
8、ol类型变量仍然可以进行算术运算,例如:boolb2=true,b3=false;boolb4=b2-b3;//bool型变量之间不应该允许算术运算。对上面语句,编译器仅给出警告而不是错误。但无论如何,引入bool类型本身就是一种改进,建议在C++程序中尽可能采用bool类型。16.2命名空间namespace命名空间(namespace)是解决大程序中多个元素(如类、全局函数和全局变量)命名冲突的一种机制。当我们要把几个部分(往往来自不同的人员或团队)合并成为一个大程序时,往往就会出现命名冲突的
9、问题:类名、全局函数名、全局变量名都可能重名。解决的方法就是把这些名字放在不同的命名空间中,在访问这些名字时使用各自的命名空间作为限定符。16.2.1命名空间的定义命名空间类似文件系统中的目录,空间中的成员类似目录中的文件。全局空间相当根目录,一个目录名作为其中多个文件的命名空间,子目录作为嵌套空间,文件作为空间中的成员。同时一个命名空间也是一个作用域。命名空间的基本规则如下:一个程序所用的多个命名空间在相同层次上不重名;在同一个命名空间中的所有成员名字不重复;在一个命名空间中可以嵌套定义其
10、内层的多个子空间。定义命名空间的语法格式如下:namespace[<空间名>]{一组成员}其中,namespace是关键字,后面给出一个空间的名字标识符。后面用花括号括起来一组成员,可以是一组类、一组函数、一组变量。如果空间名缺省则为无名空间。无名空间中的元素类似于全局变量,只是限制在本文件中访问,而全局空间中的成员可以被其它文件访问。命名空间可嵌套说明,就如同目录与子目录之间的关系。例如下面代码:intmyInt=98;//全局空间中的变量namespaceExample{//说
此文档下载收益归作者所有