Rule of Five (กฎของ 5) ใช้สำหรับ resource management ใน C++11+ ขยายจาก Rule of Three โดยเพิ่ม move semantics
หากคลาสต้องการจัดการ resource (memory, file handle, socket ฯลฯ) เอง ควร implement ทั้ง 5 ฟังก์ชันนี้:
- Destructor - ปล่อย resource เมื่อ object จบอายุ
- Copy Constructor - Deep copy resource
- Copy Assignment Operator - Deep copy assignment
- Move Constructor - "ขโมย" resource จาก rvalue (C++11)
- Move Assignment Operator - Transfer ownership จาก rvalue (C++11)
หาก implement ตัวใดตัวหนึ่ง ควร implement ทั้ง 5 (หรือ =default / =delete ตามความเหมาะสม)
แหล่งอ่าน: Rule of the Big Five (PDF)