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

Rule of Five ใน C++11 คืออะไร


Rule of Five (กฎของ 5) ใช้สำหรับ resource management ใน C++11+ ขยายจาก Rule of Three โดยเพิ่ม move semantics

หากคลาสต้องการจัดการ resource (memory, file handle, socket ฯลฯ) เอง ควร implement ทั้ง 5 ฟังก์ชันนี้:

  1. Destructor - ปล่อย resource เมื่อ object จบอายุ
  2. Copy Constructor - Deep copy resource
  3. Copy Assignment Operator - Deep copy assignment
  4. Move Constructor - "ขโมย" resource จาก rvalue (C++11)
  5. Move Assignment Operator - Transfer ownership จาก rvalue (C++11)

หาก implement ตัวใดตัวหนึ่ง ควร implement ทั้ง 5 (หรือ =default / =delete ตามความเหมาะสม)

แหล่งอ่าน: Rule of the Big Five (PDF)