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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 C++对C的扩充;2.4 命名空间; 一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。 例如,设Bill是X公司的员工,工号为123,而John是Y公司的员工,工号也是123。由于两人在不同的公司工作,可以使用相同的工号来标识而不会造成混乱,这里每个公司就表示一个独立的命名空间。如果两人在同一家公司工作,其工号就不能相同了,否则会发生混乱。; 这一特点是使用命名空间的主要理由。在大型的计算机程序中,往往会出现成百上千个标识符。命名空间提供了一种隐藏区域标识符的机制。通过将逻辑上相关的标识符组织成相应的命名空间,可使整个系统更加模块化。 在编程语言中,命名空间是一种特殊的作用域,它包含了处于该作用域内的标识符,且本身也用一个标识符来表示,这样便将一系列在逻辑上相关的标识符用一个标识符组织了起来。许多现代编程语言都支持命名空间。 ; 花括号括起来的部分称声明块。声明块中可以包括:类、变量(带有初始化)、函数(带有定义)等。在域外使用域内的成员时,需加上名字空间名作为前缀,后面加上域操作符“::” 。这里添加了名字空间名称的成员名被称为限定修饰名。如:ns1::a,ns1::fun1()等等。 最外层的名字空间域称为全局名字空间域(global namespace scope),即文件域。;;;; 使用using指示符,可以一次性地使名字空间中所有成员都可以直接被使用,比using声明更方便。 using指示符以关键字using开头,后面是关键字namespace,然后是名字空间名。;3. 使用using指示符; 通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配。 有些对象只有在程序运行时才能确定,这样编译器在编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法称为动态存储分配。;;; 当程序中不再使用由运算符new申请的某个内存空间时,可以用delete运算符释放它。 它的语法格式为:delete 指针变量; delete [常量]指针变量; 它的功能是释放由new申请到的内存空间。其中指针变量是指向需要释放内存空间的指针变量名字,并且delete只是删除动态内存空间,并不是将指针变量本身删除。; 1.new 运算符返回的是一个指向所分配类型变量(对象)的指针。对所创建的变量或对象,都是通过该指针来间接操作的,而动态创建的对象本身没有名字。 ; 4. 动态分配失败。返回一个空指针(NULL),表示发生了异常,堆资源不足,分配失败。因此,一定要检查分配的内存指针是否为空,如果是空指针,则不能引用这个指针,否则将造成系统崩溃。; 6. 动态分配的变量或对象的生命期。无名对象的生命期并不依赖于建立它的作用域,比如在函数中建立的动态对象在函数返回后仍可使用。我们也称堆空间为自由空间(free store)就是这个原因。但必须记住释放该对象所占堆空间,并只能释放一次,在函数内建立,而在函数外释放是一件很容易失控的事,往往会出错。 ;; 【例2.4】从堆内存中获取一个整型数组, 赋值后并打印出来。(P19);;;;;;对于int a(10),ra=a;语句,下列描述错误的是( )。;; (1)使用const修饰符定义常量时,必须初始化; (2)函数参数也可以用const说明,用于保证实参在该函数内部不被改动,大多数C++编译器能对具有const参数的函数进行更好的代码优化。例如,通过函数max求出整型数组a[100]中的最大值,函数原型应该是: int max( const int* pa); 这样做的目的是确保原数组的数据不被破坏,即在函数中对数组元素的操作只许读,不许写。;;;;2.13 C++语言中函数的新特性;;;;下列关于设置缺省参数值的描述中,错误的是( )。;;;【例1】下列选择重载函数的不同实现的判断条件中,错误的是( )。;;; templateclass T “T”可以在程序运行时被任何C++语言支持的数据类型所取代。如有两个以上的模板参数时,使用逗号分隔, templateclass T

文档评论(0)

酱酱 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档