在阅读有关 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/