把一个对象传递给函数或一个对象调用一个虚拟函数与把一个对象作为异常抛出 之间的区别
第一,异常对象在传递时总是被进行拷贝;当通过传值方式捕获时,异常对象被拷贝两次,对象作为参数传递给函数时不一定需要拷贝。
第二,对象作为异常抛出与作为参数传递给函数相比,前者类型转换比后者少(前者只有两种转换形式)
最后一点,catch子句进行异常类型匹配的顺序是他们在源代码中出现的顺序,第一个类型匹配成功的catch将被用来执行。当一个对象调用一个虚拟函数时,被选择的函数位于与对象类型匹配最佳的类里,即使该类不是在源代码的最前头。