第二十四章 异常和错误处理 6异常类与模板的关系
//第二十四章 异常和错误处理 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异常 /*#include <iostream> using namespace std; class wrong{}; void error() ...
- 第二十四章 并发编程
第二十四章 并发编程 爱丽丝:"但是我不想进入疯狂的人群中" 猫咪:"oh,你无能为力,我们都疯了,我疯了,你也疯了" 爱丽丝:"你怎么知道我疯了&q ...
- 鸟哥的Linux私房菜(基础篇)- 第二十四章、 X Window 配置介绍
第二十四章. X Window 配置介绍 最近升级日期:2009/08/07 在 Linux 上头的图形介面我们称之为 X Window System,简称为 X 或 X11 罗!为何称之为系统呢?这 ...
- 第二十四章 Caché 变量大全 $ZA 变量
文章目录 第二十四章 Caché 变量大全 $ZA 变量 大纲 描述 注意 `$ZA`,带终端I / O 带磁带I / O的$ZA 第二十四章 Caché 变量大全 $ZA 变量 包含当前设备上最后一 ...
- 微信小程序(第二十四章)- 数据交互前置
微信小程序(第二十四章)- 数据交互前置 讲解微信小程序前置的原因 参考文档 理解微信小程序 小程序简介 作用 提问 针对提问--uni-app介绍 小程序和普通网页开发的区别 小程序代码构成 文件个 ...
- 第二十四章、 X Window 配置介绍
好文章 第二十四章. X Window 配置介绍 http://vbird.dic.ksu.edu.tw/linux_basic/0590xwindow.php 最近升级日期:2009/08/07 在 ...
- JavaScript高级程序设计第四版学习--第二十四章
title: JavaScript高级程序设计第四版学习–第二十四章 date: 2021-5-31 10:46:01 author: Xilong88 tags: JavaScript 本章内容: ...
- 第二十四章:皮衣大卖
第二十四章:皮衣大卖 店铺掌柜说:"准备原材料?我这边都有原材料啊!还准备什么?" "不不不,这原材料必须本人亲自去准备."李丽质说道. "为何?&q ...
- 第二十四章 SQL函数 CEILING
文章目录 第二十四章 SQL函数 CEILING 大纲 参数 描述 示例 第二十四章 SQL函数 CEILING 数值函数,返回大于或等于给定数值表达式的最小整数. 大纲 CEILING(numeri ...
- 【正点原子MP157连载】第二十四章 设备树下的LED驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
最新文章
- WebRTC框架中的硬件加速
- SQL中的in与not in、exists与not exists的区别以及性能分析
- 异常处理汇总 ~ 修正果带着你的Code飞奔吧!
- 【转】创建数据库和表的SQL语句
- redis 集合操作
- 对软件测试工程师面试题目的回答[转]
- boost::allocate_unique相关的测试程序
- hibernate oracle clob 注解,Hibernate3.X实现基于CLOB字段类型的注解方式:
- Android Theme 主题总结
- linux任务计划不执行时间,Linux任务计划、周期性任务执行
- Python文件中,reload(sys)找不到的问题
- 两段检验系统生成的identityHashCode是否重复的代码
- android 清除activity栈
- 计算机桌面ie图标无法删除,桌面IE浏览器图标无法删除怎么办
- win10安装centos子系统
- Android-进阶教程-权限-特殊权限-AppOps
- 在Touch Bar上模拟吃豆豆游戏你想试试吗?
- 从“中央厨房”看媒体深度融合
- 卡片的sak为不支持的类型_泛微OA系统为大型制造业打造内外一体的移动报修平台...
- skyline开发:TE弹出窗口和主页面的交互
热门文章
- python-递归函数
- 关于打印 毕业设计资料
- VPC中安装Windows Server 2008
- [线段树实现区间最值]HDU5306 Gorgeous Sequence
- 配置grafana的数据源、添加监控
- rpm包常见的格式详解
- 使用rem单位布局的时候有什么好处_好程序员web前端技术分享移动端页面布局
- 高分辨率扫描出来的图片有摩尔纹_【艺术与设计】 摩尔纹的设计
- 用indesign怎么更换名牌姓名_北京怎么脱单?来北京相亲会,哪里有单身交友聚会?户外交友活动...
- 计算机机房里面难闻的气味,新装中央空调气味刺鼻为什么?怎么办?-中央空调 异味 刚开...