软讯网络 > 编程语言 > C/C++ > 编程交流与学习--More Effective C++的学习-Item M12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
【标 题】:编程交流与学习--More Effective C++的学习-Item M12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
【关键字】:
--More,Effective,C++,-Item,M12
【来 源】:http://blog.csdn.net/swordll80/archive/2006/09/24/1273243.aspx
编程交流与学习--More Effective C++的学习-Item M12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
差异:“第一、异常对象在传递时总被进行拷贝;当通过传值方式捕获时,异常对象被拷贝了两次。对象做为参数传递给函数时不一定需要被拷贝。第二、对象做为异常被抛出与做为参数传递给函数相比,前者类型转换比后者要少(前者只有两种转换形式)。最后一点,catch子句进行异常类型匹配的顺序是它们在源代码中出现的顺序,第一个类型匹配成功的catch将被用来执行。当一个对象调用一个虚拟函数时,被选择的函数位于与对象类型匹配最佳的类里,即使该类不是在源代码的最前头。”