C++笔记 12:理解“抛出一个异常“与“传递一个参数“或“调用一个虚函数“区别

More Effective C++笔记

理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"区别

1. 抛出异常时,控制权永远不会回到抛出异常的地方
在这里插入图片描述
做为异常抛出的对象必须被复制
在这里插入图片描述
在这里插入图片描述
2.抛出异常运行速度比参数传递要慢

当异常对象被拷贝时,拷贝构造函数是对象的静态类型(static type)
在这里插入图片描述
catch块中抛出一个异常
在这里插入图片描述
参数传递不同1:被异常抛出的对象(临时对象)可以通过普通的引用来捕获,函数调用中不允许传递一个临时对象到一个非const引用类型的参数里
异常值传递,会建立两个对象的拷贝
在这里插入图片描述
参数传递不同2:参数匹配类型的过程不同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数传递不同3:catch子句匹配顺序总是取决于它们在程序中出现的顺序
在这里插入图片描述
在这里插入图片描述
总结
在这里插入图片描述