首页 > 关于 throw 和拷贝构造

关于 throw 和拷贝构造



如图,当只有默认拷贝构造的时候明显进行了拷贝构造,但是自定义拷贝构造之后却没有,这是因为什么呢?而且 throw Except ( ) 仅在VS中能够通过编译,原因何在?
希望大神们不吝赐教。


这里对于第一张图,是没有问题的,并不需要拷贝。因为你捕捉的参数是Except&类型,而不是Except类型。

对于第二个,按理说应该也不存在拷贝的情况,因为throw Except()抛出的是一个临时的Except对象,而被捕捉的是它的引用,是不需要再构造一个对象的。

第二个的输出结果,应该是将catch(Except& e)改为了catch(Except e)的。

throw Except()应该不止是在VS中能编译通过的,至少在g++4.8下没有问题。

【热门文章】
【热门文章】