第十六周阅读程序:异常处理和命名空间
来源:互联网 发布:原子力显微镜知乎 编辑:程序博客网 时间:2024/06/05 15:34
(1)
#include <iostream >using namespace std;int a[10]= {1,2, 3, 4, 5, 6, 7, 8, 9, 10};int fun( int i);int main(){ int i ,s=0; for( i=0; i<=10; i++) { try { s=s+fun(i); } catch(int) { cout<<"数组下标越界!"<<endl; } } cout<<"s="<<s<<endl; return 0;}int fun( int i){ if(i>=10) throw i; return a[i];}
运行结果:
知识点总结:
try块是检查语句,throw用来当出现异常时抛出的一个异常信号,catch用来捕捉异常信息。
(2)
#include <iostream>using namespace std;namespace CounterNameSpace{int upperbound;int lowerbound;class counter{ int count;public: counter(int n) { if (n <= upperbound ) { count = n; } else { count = upperbound; } } void reset(int n) { if (n < upperbound) { count = n; } } int run() { if (count > lowerbound) { return count--; } else return lowerbound; }};}int main(){ CounterNameSpace::upperbound = 100; CounterNameSpace::lowerbound = 0; CounterNameSpace::counter ob1(10);int i; do { i = ob1.run(); cout << i << " "; } while (i > CounterNameSpace::lowerbound); cout << endl; CounterNameSpace::counter ob2(20); do { i = ob2.run(); cout << i << " "; } while (i > CounterNameSpace::lowerbound); cout << endl; ob2.reset(100); do { i = ob2.run(); cout << i << " "; } while (i > CounterNameSpace::lowerbound); cout << endl; return 0;}
运行结果:
运行结果:
命名空间的作用是建立一些相互分隔的作用域,把一些全局实体分隔开来,以免产生命名冲突。
ob2.reset(100);因为100==upperbound,所以i==0,所以直接输出0;
(3)将(2)中的main函数换作如下形式,其余不变
int main(){ using CounterNameSpace::upperbound; upperbound = 100; //(a) CounterNameSpace::lowerbound = 0; //(b) CounterNameSpace::counter ob1(10); int i; do { i = ob1.run(); cout << i<<" "; } while( i > CounterNameSpace::lowerbound); cout << endl; using namespace CounterNameSpace; counter ob2(20); do { i = ob2.run(); cout << i<<" "; } while( i > CounterNameSpace::lowerbound); //(c) cout << endl; ob2.reset(100); lowerbound = 90; //(d) do { i = ob2.run(); cout << i <<" "; } while( i > lowerbound); return 0;}
运行结果:
知识点总结:
a,c,d处可以省去CounterNameSpace::,b处不可以省去CounterNameSpace::。
因为using CounterNameSpace::upperbound;声明了upperbound为命名空间成员,而lowerbound没有声明,所以不能省略。
在用using声明后,在其后程序中出现的upperbound,lowerbound就是隐含的指CounterNameSpace::upperbound,CounterNameSpace::lowerbound,所以c,d处可以省略。
0 0
- 第十六周阅读程序:异常处理和命名空间
- 第十六周阅读项目:异常处理和命名空间
- 第16周-异常处理和命名空间-课后实践·阅读程序
- 第16周《C++语言基础》程序阅读——异常处理和命名空间
- 《C++语言基础》程序阅读——异常处理和命名空间
- 第15周-阅读项目1-异常处理&&命名空间
- 第15周-阅读项目2-异常处理&&命名空间
- 第十六周 阅读程序
- 第十六周阅读程序
- 第十六周阅读程序
- 第十六周 阅读程序
- 第十六周 程序阅读
- 第十六周 程序阅读
- 第十六周--阅读程序
- 第十六周--阅读程序
- 第十六周--阅读程序
- 第十六周 阅读程序
- 第十六周--阅读程序
- MyBatis 判断条件为等于的问题
- 斯坦福兔子和其他图形学模型数据下载
- 叹息只因常会失落
- Android项目中运行Java应用程序出错:Fatal Error: Invalid Layout of java.lang.String at value
- 1006--<Property>
- 第十六周阅读程序:异常处理和命名空间
- Android之自定义(上方标题随ViewPager手势慢慢滑动)
- Unix 网络编程卷1
- HLS图像处理系列——前言
- JAVA记忆翻牌游戏制作
- 论文数据分析思路
- Java基础总结之类的继承
- 走两步
- acm初学