在阅读有关 copy-and-swap 惯用语的this之后,我阅读了this,该词在(2)下显示:

class_name & class_name :: operator= ( const class_name & )     (2)



什么时候应该避免使用 copy-and-swap 习惯?

当它完全“不能使用”时?

现实生活中是否存在 copy-and-swap 和零规则都不适用的情况?

我确实找到了这个question,但是它太具体了,没有包含有关如何识别此类情况的任何指南。

最佳答案



当您可以证明朴素的复制比swap安全,快速时。

您可以确定不存在拥有对象的成员指针(智能指针和原始指针)且所有成员对象都相同的情况。



如果类型不是swappable,则不能使用 copy-and-swap 。

要进行交换,类型必须是可移动构造的和可移动分配的,或者您必须定义了swap成员函数或 friend 函数。

关于c++ - 何时不适用 copy-and-swap 习语,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33734873/

10-11 22:46
查看更多