Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Copy-and-Swap Idiom ใน C++


Copy-and-Swap Idiom ใน C++

การกำหนดค่า (assignment) ประกอบด้วย 2 ขั้นตอน: ทำลายสถานะเก่าของออบเจ็กต์ และสร้างสถานะใหม่ Destructor ใช้ขั้นตอนแรก Copy constructor ใช้ขั้นตอนที่สอง การ overload assignment operator อาจทำให้ยาก Copy-and-swap idiom เป็นวิธีแก้

Idiom นี้ใช้ copy-constructor สร้าง local copy ของข้อมูล แล้ว swap ข้อมูลเก่ากับข้อมูลใหม่ด้วย swap function Temporary copy จะถูกทำลายด้วย destructor ทำให้เหลือแค่ copy ของข้อมูลใหม่

Copy-and-swap idiom ต้องการ 3 สิ่ง:

  • copy-constructor
  • destructor
  • swap function (non-throwing)

หมายเหตุ: ห้ามใช้ std::swap เพราะมันใช้ copy constructor และ assignment operator ภายใน ซึ่งจะวนรูป