- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
2.4命名空间
2.8动态内存的分配
2.10引用
2.11const修饰符
2.13C++中函数的新特性
十
第2章C++对C的扩充
2.4.1为什么要引入命名空间
命名空间是随标准C++而引入的,用来防止
全局空间内的命名冲突,即重名问题。
大型应用系统常常由许多人来设计完成,命名
冲突是一种潜在的危险,程序员必须细心地定义标
识符,以保证名字的惟一性。
2.4命名空间
2.4.1为什么要引入命名空间
一个标识符可在多个命名空间中定义,它在不同
命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。
例如,设Bill是X公司的员工,工号为123,而
John是Y公司的员工,工号也是123。由于两人在不同
的公司工作,可以使用相同的工号来标识而不会造成
混乱,这里每个公司就表示一个独立的命名空间。如
果两人在同一家公司工作,其工号就不能相同了,否
则会发生混乱。
2.4.1为什么要引入命名空间
这一特点是使用命名空间的主要理由。在大型的计算
机程序中,往往会出现成百上千个标识符。命名空间提供了一种隐藏区域标识符的机制。通过将逻辑上相关的标识符组织成相应的命名空间,可使整个系统更加模块化。
在编程语言中,命名空间是一种特殊的作用域,它包
含了处于该作用域内的标识符,且本身也用一个标识符来
表示,这样便将一系列在逻辑上相关的标识符用一个标识
符组织了起来。许多现代编程语言都支持命名空间。
花括号括起来的部分称声明块。声明块中可以包括:
类、变量(带有初始化)、函数(带有定义)等。在域外使用域内的成员时,需加上名字空间名作为前缀,后面加上域操作符“::”。这里添加了名字空间名称的成员名被称为限定修饰名。如:ns1::a,ns1::fun1()等等。
最外层的名字空间域称为全局名字空间域(globalnamespacescope),即文件域。
命名空间名
声明块
2.4.2如何创建命名空间
floata,b,csfun1()(……)
namespacens1
名字空间域可分层嵌套,有分层屏蔽作用。例如:namespacen1
namespacen2//名字空间嵌套
classmatrix{……}
}
访问matrix,可写:n1::n2::matrix。
namespacens1
floata,b,csfun1()(…)
命名空间名
声明块
2.4.2如何创建命名空间
2.4.3如何访问命名空间成员
#includeiostream
usingnamespacestd;
namespaceA
{intx=1;}
namespaceB
{intx=2;}
voidmain()
int
y=x;
//errorC2065:x:undeclaredidentifier
inta=A::X;intb=B::X;
coutabendl;
//OK
例
人
}
#includeiostream
usingnamespacestd;
namespaceA
{intx=1;}
namespaceB
{intx=2;}
voidmain()
2.使用using声明
coutabendl;
}
inta=X;
intb=B::X;
人
3.使用using指示符
使用using指示符,可以一次性地使名字
空间中所有成员都可以直接被使用,比using声明更方便。
using指示符以关键字using开头,后面是关键字namespace,然后是名字空间名。
usingnamespacestd;
3.使用using指示符
#includeiostream
usingnamespacestd;
namespaceA
{intx=1;inty;}
namespaceB
{intx=2;}
voidmain()
usingnamespaceA;
coutabendl;
}
inta=x+y;intb=B::X;
人
2.8动态内存的分配与释放
在程序运行时可使用的内存空间称为
堆(heap),堆内存就是在程序运行时获得
的内存空间,在程序编译和连接时不必确定
它的大小,它随着程序的运行过程变化,时大时小,因此堆内存是动态的,堆内存也称为动态内存。
系统申请取得堆中
文档评论(0)