- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c面向程序设计5重点
8.1 异常处理 8.2 命名空间 8.3 使用早期的函数库 8.1 异常处理 基本思想: C++的异常处理的基本思想是将异常的检测与处理分离。 在一个函数体中检测到异常条件满足,但无法确定相应的处理方法时,就引发一个异常,然后由函数的直接或间接调用者处理此异常。 C++的异常处理建立在三个关键字基础之上: try 、catch 和 throw。 8.1 异常处理 C++异常处理语句的一般形式 try { //try 块内监视异常 if (条件)throw exception; //由throw 抛出异常 … ; //其它语句 } catch( 类型1 参数1 ) { //catch块内处理代码 } catch( 类型2 参数2 ) { … ; } …… catch( 类型n 参数n ) { … ; } 8.1 异常处理 try语句块必须出现在前,catch紧跟在后。catch之后的圆括号中必须含有数据类型,捕获是利用数据类型匹配实现的。在try{…} 和catch(…){ …}语句之间不得插入任何其它C++语句。 如果程序内有多个异常处理模块,则当异常发生时,系统自动查找与该异常类型相匹配的catch模块,查找次序为catch出现的次序。需要注意的是catch处理程序的出现顺序很重要,因为在一个try块中,异常处理程序是按照它出现的顺序被检查的。 8.1 异常处理 引发异常的throw语句必须在try语句块内,或是由try语句块中直接或间接调用的函数体执行。throw语句的一般形式为: throw exception; exception表示一个异常值,它可以是任意类型的变量、对象或常量。 8.2 命名空间 本课程的各章节的程序中,都用到了这样的语句: using namespac std; 这就是命名空间std。 为什么需要命名空间?C语言定义了3个作用域,即文件域,函数域和复合语句域。C++又引入了类作用域。 不同的作用域中可以用相同的变量名,互不干扰。但是,如果是在不同的库文件( *.h )中,有相同的变量名和类名,而不巧又在被一个程序包含、主文件中又调用了该变量,定义了该类对象,于是引起矛盾冲突。 8.2 命名空间 什么是命名空间?为了解决这个问题,ANSI C++增加了命名空间的概念。简单地说,就是ANSI C++引入的,可以由用户命名的内存区域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。比如: namespace nsl { int a; double b; } 其中: namespace 是定义命名空间的关键字; nsl 是用户指定的空间名。 花括号内包含的a,b,是命名空间成员。 8.2 命名空间 注意a 和b 仍然是全局变量,仅仅把它们隐藏在命名空间中,而程序中如果要使用变量a 和b,必须加上空间名和域分辨符。如:nsl::a,nsl::b 等。这些名字称为被限定名。 C++中的命名空间和被限定名的关系,类似与操作系统中文件夹和其中文件的关系。 命名空间的作用:是建立一些互相分隔的作用域,把一些全局实体分割开来,以免产生名字冲突。命名空间中的被限定名可以是: 常量和变量( 可以带有初始化 ); 函数( 可以是定义或声明 ); 结构体或类; 模板或另一个命名空间( 意味着,命名空间可以嵌套 ) 8.2 命名空间 使用命名空间的简化形式:如果在一个命名空间中定义了至少10个实体,就需要至少使用10次 using 命名空间名。能否简化呢?可以。 C++提供 using namespace 语句来实现简化。其一般形式为: using namespace 命名空间名; 例如, using namespace ns1; 声明了在本作用域中要用到命名空间ns1 中的成员,在使用该命名空间的任何成员时,都不必使用 ns1 空间名来限定。好象全局对象一样。如果紧接上面的声明,有如下语句: student stud1(101, “Wang”,18); 则是指定义一个ns1空间中的 student 类对象。 注意,这种简化方法只能是使用少量的命名空间,并且不至于产生冲突的情况下,才能简化。如上一个示例中,ns1两个ns1命名空间就不能简化,因为会引起冲突。 8.2 命名空间 无名的命名空间:C++允许使用没有名字的命名空间,如: namespace { void fun( ) { cout“OK!”endl
您可能关注的文档
- ADAMSView在汽车开发中的应用重点.ppt
- Adapterreport重点.ppt
- ADC入门基础知识重点.ppt
- ADAMSCar在底盘设计中的应用重点.ppt
- ADC废水的氨氮处理自动切换重点.ppt
- ADEMCO安防集成系统技术重点.ppt
- ADDA接口重点.pptx
- ADIAD八路同时取样ΣΔADC解决方案重点.docx
- ADI伺服驱动方案ADSPCM重点.ppt
- Adsl技术知识重点.doc
- 专题10:2025年(沪)中考数学二模试题分类汇编——相似三角形、四边形、圆的证明(23题)(学生版).pdf
- 专题10:2025年(沪)中考数学二模试题分类汇编——相似三角形、四边形、圆的证明(23题)(教师版).pdf
- 2024-2025学年江苏省南京市鼓楼区凤凰花园城小学数学三下期终综合测试试题(含解析).docx
- 我国服装演变过程.pptx
- 2024-2025学年江苏省南京市瑞金北村小学数学三年级第二学期期末质量跟踪监视模拟试题含解析.docx
- 2025年医学分析-基孔肯雅热防控知识培训.docx
- 2024-2025学年江苏省连云港市海州区数学四下期中综合测试模拟试题含解析.docx
- 专题07:2025年(沪)中考数学二模试题分类汇编——计算(19、20题)(教师版).pdf
- 2025小红书·小美说美妆行业玩法推荐.docx
- 化学实验与科学探究(第2课时化学试剂的取用)课件--2025-2026学年九年级化学人教版(2024)上.pptx
文档评论(0)