C++ Primer 5th笔记(chap 19 特殊工具与技术)异常类层次
1.
- 类 exception 、 bad_cast 和 bad_alloc 定 义 了 默 认 构 造 函 数
- runtime_error 和 logic_error没有默认构造函数, 但是有一个可以接受 C 风格字符串或者标准库 string类型实参的构造函数
1.1 exception 定义的函数
- 拷贝构造函数
- 拷贝赋值运算符
- 一个虚析构函数
- 一个名为 what 的虚成员。
what 函数返回一个 const char*,该指针指向一个以null结尾的字符数组, 并且确保不会抛出任何异常
eg.
class out_of_stock:public std::runtime_error
{public:explicit out_of_stock(const std::string &s):std::runtime_error(s){}
};
class isbn_mismatch:public std::logic_error
{public:explicit isbn_mismatch(const std::string &s):std::logic_error(s){}isbn_mismatch(const std::string &s,const std::string &rhs,const std::string &lhs): std::logic_error(s),left(lhs),right(rhs){}const std::string left,right;
}
1.2 使用我们自己的异常类型
Sales_data& Sales_data::operator+(const Sales_data& rhs)
{if(isbn()!=rhs.isbn())throw isbn_mismatch("Wrong isbns",isbn(),rhs.isbn());units_sold+=rhs.units_sold;revenue+=rhs.revenue;return *this;
}Sales_data item1,item2,sum;
while(cin>>item1>>item2)
{try{sum=item1+item2;}catch(const isbn_mismatch &e){cerr<<e.what()<<":left isbn("<<e.left<<")right isbn("<<e.right<<")"<<endl;}
}
C++ Primer 5th笔记(chap 19 特殊工具与技术)异常类层次相关推荐
- C++ Primer 5th笔记(chap 19 特殊工具与技术)类成员指针
1. 成员指针( pointer to member) 指可以指向类的非静态成员的指针. 成员指针指示的是类的成员, 而非类的对象. 类的静态成员不属于任何对象, 因此无须特殊的指向静态成员的指针 指 ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid运算符
1. typeid运算符(typeid operator) 它允许程序向表达式提问:你的对象是什么类型? typeid表达式的形式是typeid(e),其中e可以是任意表达式或类型的名字,它操作的结果 ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)运行时类型识別RTTI
1. 运行时类型识别(run-time type identification ) 当我们将这两个运算符用于某种类型的指针或引用, 并且该类型含有虚函数时, 运算符将 使用指针或引用所绑定对象的动态类 ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)type_info 类
1. type_info 的操作 操作 描述 t1 == t2 如果type_info对象t1和t2表示同一种类型,则返回true t1 != t2 如果type_info对象t1和t2表示不同的类型 ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid
1. 通常情况下使用 typeid 比较两条表达式的类型是否相同或者比较一条表达式的类型是否与指定的类型相同 Derived *dp = new Derived; Base *bp = dp; // ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)使用 RTTI
1. RTTI用处 当想为具有继承关系的类实现相等运算符时.对于两个对象来说,如果他们的类型相同并且对应的数据成员取值相同,则我们说这两个类是相等的. class Base {friend bool ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)定位 new 表达式
1. 定位 new (placement new) 1.1 起因 内存分配和初始化分离开 Placement new allows you to construct an object in memo ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)malloc 函数与 free 函数
void *operator new (size_t size) {if (void *mem = malloc (size) )return mem;elsethrow bad_alloc ( ); ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)控制内存分配
1. new void operator new (size_t, void ) ;//不允许重新定义这个版本 string *sp = new string("a value") ...
最新文章
- 问题集锦(43-45)
- 骗子防不胜防,我们该如何安全上网?
- HDU3400(计算几何中的三分法利用)
- P1975 [国家集训队]排队(三维偏序)
- 指针数组、数组指针、指针函数、函数指针
- 通过命令行获取计算机参数,Win32命令行参数的传到和获取
- C语言枚举类型(enum)的各种用法
- c++opencv汉字分割_基于OpenCV 的车牌识别
- (转载)C++面试宝典2011版
- Photoshop CS6 破解
- 国内物联网平台初探(八):中移物联网开放平台OneNet
- LiberoIP核使用——CoreSPI
- 语言-汉语-官话:官话
- #51CTO学院四周年# 感谢51CTO学院让我走出迷茫
- 海归学子创新创业座谈会:龙凡教授向浙江省委书记车俊汇报 Conflux 研发进展...
- 微软愿景:未来工作, 也可以这样,强
- 由计算机谈最强大脑周玮
- 一文看懂IO多路复用
- X-Frame-Options to sameorgin
- 电脑不识别u盘的解决方法
热门文章
- 数据库:悲观锁与乐观锁
- 青少年蓝桥杯_2020_steam考试_初级组_第二题
- Android --- 如何更改应用程序的图标以及名称(Android studio)
- Gartner:基础设施和运营领域10大技术趋势
- 打造“新基建”核心支柱 数据中心产业期待提速提质
- GB50174-2017新旧对比
- Interview:算法岗位面试—10.10下午—上海某银行算法岗位(偏数据分析,四大行之一)的技术面—关于项目的考察
- TF之CNN:CNN实现mnist数据集预测 96%采用placeholder用法+2层C及其max_pool法+隐藏层dropout法+输出层softmax法+目标函数cross_entropy法+
- json中的转义字符和数字
- 代码管理平台之svn