กฎสามข้อเป็นกฎง่ายๆ เมื่อใช้ C++ นี่เป็นแนวปฏิบัติที่ดีที่บอกว่าถ้าชั้นเรียนของคุณต้องการสิ่งใด
- ตัวสร้างการคัดลอก
- ผู้ดำเนินการมอบหมาย
- หรือผู้ทำลาย
กำหนดไว้อย่างชัดเจนจึงมีแนวโน้มว่าจะต้องใช้ทั้งสามอย่าง
ทำไมถึงเป็นเช่นนี้? เป็นเพราะว่าหากชั้นเรียนของคุณต้องการสิ่งใดๆ ข้างต้น จะเป็นการจัดการทรัพยากรที่จัดสรรแบบไดนามิกและมีแนวโน้มว่าจะต้องใช้ทรัพยากรอื่นเพื่อให้บรรลุเป้าหมายนั้นได้สำเร็จ ตัวอย่างเช่น หากคุณต้องการตัวดำเนินการมอบหมาย คุณจะต้องสร้างสำเนาของอ็อบเจ็กต์ที่กำลังถูกคัดลอกโดยการอ้างอิง ดังนั้นจึงจัดสรรทรัพยากร คุณจะต้องใช้ตัวสร้างการคัดลอกสำหรับการคัดลอกและตัวทำลายเพื่อเพิ่มทรัพยากรเหล่านี้
1. คัดลอกตัวสร้าง − คอนสตรัคเตอร์การคัดลอกที่คอมไพเลอร์จัดหาจะทำสำเนาคุณลักษณะทั้งหมดของ Foo Manager แบบสมาชิก สิ่งนี้ทำให้เกิดปัญหาเช่นเดียวกับผู้ดำเนินการมอบหมาย
2. ผู้ดำเนินการมอบหมาย − หากคุณไม่ได้จัดเตรียมไว้ คอมไพเลอร์จะสร้างตัวดำเนินการกำหนดค่าเริ่มต้น การดำเนินการกำหนดเริ่มต้นเป็นฟังก์ชันคัดลอกแบบสมาชิกและจะทำสำเนาแบบตื้นและไม่ใช่แบบลึก ซึ่งอาจทำให้เกิดปัญหา เช่น หน่วยความจำรั่ว การมอบหมายผิด
3. ตัวทำลาย − เมื่อผู้จัดการรายนี้อยู่นอกขอบเขต ควรจะปล่อยทรัพยากรทั้งหมดที่จัดการอยู่