//第二十四章 异常和错误处理 6异常类与模板的关系
#include <iostream>
using namespace std;
const int num=5;
class wrong{};
template<class T>
class people
{
public:people(int Size=num);~people(){ delete []p; };int&operator[](int off);const int&operator[](int off)const;int GetSize()const{ return size;}//class wrong{};class offset{public:offset(int Size):osize(Size){};~offset(){};virtual int Get(){ return osize;}virtual void show(){cout<<"丢出offset异常"<<endl;cout<<"下标值"<<osize<<"出错"<<endl;}protected:int osize;};class Big:public offset{public:Big(int Size):offset(Size){}virtual void show(){cout<<"丢出Big异常"<<endl;cout<<"下标值为"<<offset::osize<<endl;}}; class Nav:public offset{public:Nav(int Size):offset(Size){}virtual void show(){cout<<"丢出Nav异常"<<endl;cout<<"下标值为"<<offset::osize<<endl;}}; class Small{public:Small(int Size):_size(Size){}~Small(){}virtual int Get(){ return _size;}virtual void show(){cout<<"丢出Small异常"<<endl;cout<<"下标值为:"<<_size<<endl;}protected:int _size;};class Zero: public Small{public:Zero(int Size):Small(Size){}virtual void show(){cout<<"丢出Small异常"<<endl;cout<<"下标值为:"<<Small::_size<<endl;}};
private:int *p;int size;
};
template <class T>
people<T>::people(int Size):size(Size)
{cout<<"调用构造函数"<<endl;if(Size == 0){throw Zero(Size);}if(Size < 10){throw Small(Size);}if(Size > 10000){throw Big(Size);}if(Size < 1){throw Nav(Size);}p = new int[Size];for(int i=0; i<Size; i++){p[i] = 0;}
}
template <class T>
int&people<T>::operator[](int off)
{if(off>=0 && off < GetSize()){return p[off];}throw wrong();return p[0];
}//一样,只是该函数内的值是不可更改并且返回值也是不可更改的
template <class T>
const int&people<T>::operator[](int off)const
{int Size = GetSize();if(off>=0 && off < GetSize()){return p[off];}throw wrong();return p[0];
}int main()
{try{people<int> one(9);for(int i=0; i<100; i++){one[i] = i;cout<<"one["<<i<<"]:"<<i<<endl;}}catch(wrong){cout<<"超过数组长度,不能继续进行赋值操作"<<endl;}catch(people<int>::Big big){//cout<<"数组值过大,值为:"<<big.Get()<<endl;big.show();}catch(people<int>::Small small){//cout<<"数组值过小,值为:"<<small.Get()<<endl;small.show();}catch(people<int>::Zero zero){//cout<<"下标值为0"<<endl;zero.show();}catch(people<int>::Nav nav){// cout<<"下标值为负数"<<endl;nav.show();}catch(people<int>::offset offset){//cout<<"下标值过大或者过小"<<endl;offset.show();}return 0;
}

  

转载于:https://www.cnblogs.com/xiangxiaodong/archive/2012/10/11/2719246.html

第二十四章 异常和错误处理 6异常类与模板的关系相关推荐

  1. 第二十四章 异常和错误处理 1异常

    // 第二十四章 异常和错误处理 //1异常 /*#include <iostream> using namespace std; class wrong{}; void error() ...

  2. 第二十四章 并发编程

    第二十四章 并发编程 爱丽丝:"但是我不想进入疯狂的人群中" 猫咪:"oh,你无能为力,我们都疯了,我疯了,你也疯了" 爱丽丝:"你怎么知道我疯了&q ...

  3. 鸟哥的Linux私房菜(基础篇)- 第二十四章、 X Window 配置介绍

    第二十四章. X Window 配置介绍 最近升级日期:2009/08/07 在 Linux 上头的图形介面我们称之为 X Window System,简称为 X 或 X11 罗!为何称之为系统呢?这 ...

  4. 第二十四章 Caché 变量大全 $ZA 变量

    文章目录 第二十四章 Caché 变量大全 $ZA 变量 大纲 描述 注意 `$ZA`,带终端I / O 带磁带I / O的$ZA 第二十四章 Caché 变量大全 $ZA 变量 包含当前设备上最后一 ...

  5. 微信小程序(第二十四章)- 数据交互前置

    微信小程序(第二十四章)- 数据交互前置 讲解微信小程序前置的原因 参考文档 理解微信小程序 小程序简介 作用 提问 针对提问--uni-app介绍 小程序和普通网页开发的区别 小程序代码构成 文件个 ...

  6. 第二十四章、 X Window 配置介绍

    好文章 第二十四章. X Window 配置介绍 http://vbird.dic.ksu.edu.tw/linux_basic/0590xwindow.php 最近升级日期:2009/08/07 在 ...

  7. JavaScript高级程序设计第四版学习--第二十四章

    title: JavaScript高级程序设计第四版学习–第二十四章 date: 2021-5-31 10:46:01 author: Xilong88 tags: JavaScript 本章内容: ...

  8. ​第二十四章:皮衣大卖

    第二十四章:皮衣大卖 店铺掌柜说:"准备原材料?我这边都有原材料啊!还准备什么?" "不不不,这原材料必须本人亲自去准备."李丽质说道. "为何?&q ...

  9. 第二十四章 SQL函数 CEILING

    文章目录 第二十四章 SQL函数 CEILING 大纲 参数 描述 示例 第二十四章 SQL函数 CEILING 数值函数,返回大于或等于给定数值表达式的最小整数. 大纲 CEILING(numeri ...

  10. 【正点原子MP157连载】第二十四章 设备树下的LED驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

最新文章

  1. WebRTC框架中的硬件加速
  2. SQL中的in与not in、exists与not exists的区别以及性能分析
  3. 异常处理汇总 ~ 修正果带着你的Code飞奔吧!
  4. 【转】创建数据库和表的SQL语句
  5. redis 集合操作
  6. 对软件测试工程师面试题目的回答[转]
  7. boost::allocate_unique相关的测试程序
  8. hibernate oracle clob 注解,Hibernate3.X实现基于CLOB字段类型的注解方式:
  9. Android Theme 主题总结
  10. linux任务计划不执行时间,Linux任务计划、周期性任务执行
  11. Python文件中,reload(sys)找不到的问题
  12. 两段检验系统生成的identityHashCode是否重复的代码
  13. android 清除activity栈
  14. 计算机桌面ie图标无法删除,桌面IE浏览器图标无法删除怎么办
  15. win10安装centos子系统
  16. Android-进阶教程-权限-特殊权限-AppOps
  17. 在Touch Bar上模拟吃豆豆游戏你想试试吗?
  18. 从“中央厨房”看媒体深度融合
  19. 卡片的sak为不支持的类型_泛微OA系统为大型制造业打造内外一体的移动报修平台...
  20. skyline开发:TE弹出窗口和主页面的交互

热门文章

  1. python-递归函数
  2. 关于打印 毕业设计资料
  3. VPC中安装Windows Server 2008
  4. [线段树实现区间最值]HDU5306 Gorgeous Sequence
  5. 配置grafana的数据源、添加监控
  6. rpm包常见的格式详解
  7. 使用rem单位布局的时候有什么好处_好程序员web前端技术分享移动端页面布局
  8. 高分辨率扫描出来的图片有摩尔纹_【艺术与设计】 摩尔纹的设计
  9. 用indesign怎么更换名牌姓名_北京怎么脱单?来北京相亲会,哪里有单身交友聚会?户外交友活动...
  10. 计算机机房里面难闻的气味,新装中央空调气味刺鼻为什么?怎么办?-中央空调 异味 刚开...