Constructor called
Copy Constructor called
E17保证的副本说明了"Copy elision is mandatory in Throwing and catching exceptions by value"
"Copy Constructor called"
作为输出。
我错过了什么?
副本的省略是必须在抛出和捕获异常的情况下进行的。
yes,这是正确的,这是按预期工作的 - 当调用
并将其复制到保留的存储中。Error
。在C ++ 17之前,它可以创建
test()
您观察到的副本在此处完成:
Error
-catch (Error e)
从保留存储中复制到局部参数。如果您不想复制一个对象,请修复它:Error
或catch (Error &e)
。
catch (const Error &e)