C 11移动构造函数有副作用

前端之家收集整理的这篇文章主要介绍了C 11移动构造函数有副作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C中,由于标准中的特殊子句允许编译器省略对返回语句产生的复制构造函数调用,因此即使复制构造函数具有副作用,也不能依赖从return语句调用的复制构造函数.因此,编写复制构造函数除了复制构造实例之外还执行其他操作是不好的方式.

在C 11标准中是否有类似的语句允许编译器在某些情况下消除对移动构造函数调用 – 如果是,那么这些情况是什么?

解决方法

Copy-elision同样适用于移动构造,它是完全相同的条款,复制构造和移动构造的省略统称为“复制省略”.

§12.8[class.copy] p31

When certain criteria are met,an implementation is allowed to omit the copy/move construction of a class object,even if the copy/move constructor and/or destructor for the object have side effects. […]

猜你在找的C&C++相关文章