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