如图,当只有默认拷贝构造的时候明显进行了拷贝构造,但是自定义拷贝构造之后却没有,这是因为什么呢?而且 throw Except ( ) 仅在VS中能够通过编译,原因何在?
希望大神们不吝赐教。
如图,当只有默认拷贝构造的时候明显进行了拷贝构造,但是自定义拷贝构造之后却没有,这是因为什么呢?而且 throw Except ( ) 仅在VS中能够通过编译,原因何在?
希望大神们不吝赐教。
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
这里对于第一张图,是没有问题的,并不需要拷贝。因为你捕捉的参数是
Except&
类型,而不是Except
类型。对于第二个,按理说应该也不存在拷贝的情况,因为
throw Except()
抛出的是一个临时的Except
对象,而被捕捉的是它的引用,是不需要再构造一个对象的。第二个的输出结果,应该是将
catch(Except& e)
改为了catch(Except e)
的。throw Except()
应该不止是在VS中能编译通过的,至少在g++4.8下没有问题。