C++笔记 12:理解“抛出一个异常“与“传递一个参数“或“调用一个虚函数“区别
More Effective C++笔记
理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"区别
1. 抛出异常时,控制权永远不会回到抛出异常的地方
做为异常抛出的对象必须被复制
2.抛出异常运行速度比参数传递要慢
当异常对象被拷贝时,拷贝构造函数是对象的静态类型(static type)
catch块中抛出一个异常
参数传递不同1:被异常抛出的对象(临时对象)可以通过普通的引用来捕获,函数调用中不允许传递一个临时对象到一个非const引用类型的参数里
异常值传递,会建立两个对象的拷贝
参数传递不同2:参数匹配类型的过程不同
参数传递不同3:catch子句匹配顺序总是取决于它们在程序中出现的顺序
总结