网站大量收购闲置独家精品文档,联系QQ:2885784924

《面向对象程序设计》课件第2章 C++对C的扩充.pptxVIP

《面向对象程序设计》课件第2章 C++对C的扩充.pptx

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

人生风雪客 + 关注
实名认证
文档贡献者

如果有遇到文件不清或断篇的或者需要转换文件格式的情况请联系我,会在第一时间帮你完成完整的文档。文档如有侵权,请及时告知,本人将尽快予以删除,谢谢啦。

1亿VIP精品文档

相关文档