การมอบหมายประกอบด้วย 2 ขั้นตอนที่ฉีกสถานะเก่าของวัตถุและสร้างสถานะใหม่สำหรับวัตถุนั้น ตัวทำลายจะใช้สำหรับขั้นตอนแรกและตัวสร้างการคัดลอกจะทำขั้นตอนที่สอง การดำเนินการทั้งสองอย่างตรงไปตรงมา แต่เมื่อโอเวอร์โหลดโอเปอเรเตอร์ที่ได้รับมอบหมาย อาจเป็นเรื่องยากที่จะนำไปใช้ สำนวนการคัดลอกและสลับเป็นวิธีแก้ปัญหาเดียวกัน
สำนวนนี้ใช้ตัวสร้างสำเนาเพื่อสร้างสำเนาข้อมูลในเครื่อง จากนั้นจะสลับข้อมูลเก่ากับข้อมูลใหม่โดยใช้ฟังก์ชันสลับ สำเนาชั่วคราวจะถูกทำลายโดยใช้ตัวทำลาย ในที่สุดเราก็มีสำเนาของข้อมูลใหม่เท่านั้น
ดังนั้น สำนวน copy-and-swap ต้องการสามสิ่ง ได้แก่ ตัวสร้างการคัดลอก ตัวทำลาย และฟังก์ชันสลับ ฟังก์ชันสวอปเป็นฟังก์ชันที่ไม่ทำการโยนซึ่งสลับสองอ็อบเจ็กต์ของคลาส สมาชิก หมายเหตุ - คุณต้องไม่ใช้ฟังก์ชันสลับ std::เนื่องจากภายในใช้ตัวสร้างการคัดลอกและตัวดำเนินการมอบหมายเพื่อให้ได้สิ่งเดียวกัน