มีการใช้กฎห้าข้อใน C++ สำหรับการจัดการทรัพยากร การจัดการทรัพยากรทำให้ไคลเอ็นต์ไม่ต้องกังวลเกี่ยวกับอายุการใช้งานของออบเจ็กต์ที่มีการจัดการ ซึ่งอาจช่วยลดการรั่วไหลของหน่วยความจำและปัญหาอื่นๆ ในโค้ด C++ แต่การจัดการนี้มีค่าใช้จ่าย กฎของ The Big Five ระบุว่า หากคุณต้องเขียนหนึ่งในหน้าที่ต่อไปนี้ คุณต้องมีนโยบายสำหรับฟังก์ชันเหล่านี้ทั้งหมด หากเรามี Object Foo เราก็สามารถมี FooManager ที่จัดการ Foo ทรัพยากรได้ เมื่อใช้งาน FooManager คุณอาจต้องใช้ฟังก์ชันต่อไปนี้ทั้งหมด -
-
ตัวทำลาย − เมื่อผู้จัดการรายนี้อยู่นอกขอบเขต ควรจะปล่อยทรัพยากรทั้งหมดที่จัดการอยู่
-
ตัวดำเนินการมอบหมาย − หากคุณไม่ได้จัดเตรียมไว้ คอมไพเลอร์จะสร้างตัวดำเนินการกำหนดค่าเริ่มต้น การดำเนินการกำหนดเริ่มต้นเป็นฟังก์ชันคัดลอกแบบสมาชิกและจะทำสำเนาแบบตื้นและไม่ใช่แบบลึก ซึ่งอาจทำให้เกิดปัญหา เช่น หน่วยความจำรั่ว การมอบหมายผิด
-
คัดลอกตัวสร้าง − คอนสตรัคเตอร์การคัดลอกที่คอมไพเลอร์จัดหาจะทำสำเนาคุณลักษณะทั้งหมดของ FooManager สิ่งนี้ทำให้เกิดปัญหาเช่นเดียวกับผู้ดำเนินการมอบหมาย
-
ย้ายคอนสตรัคเตอร์ − การคัดลอกอ็อบเจ็กต์อาจมีราคาแพง เนื่องจากเกี่ยวข้องกับการสร้าง คัดลอก และทำลายอ็อบเจ็กต์ชั่วคราว C++11 นำเสนอแนวคิดของการอ้างอิงค่า r การอ้างอิงค่า r สามารถผูกไว้กับค่า r ได้อย่างชัดเจน ค่า r เป็นอ็อบเจ็กต์ที่ไม่มีชื่อ วัตถุชั่วคราวกล่าวอีกนัยหนึ่ง การอ้างอิงค่า r นี้สามารถใช้ในคอนสตรัคเตอร์เพื่อสร้างการอ้างอิงไปยังค่า r ที่ส่งผ่านไปยังมัน
-
ย้ายตัวดำเนินการมอบหมาย − การมีทรัพยากรครั้งละหนึ่งทรัพยากรจะมีประโยชน์ ความเป็นเจ้าของทรัพยากรนี้สามารถโอนจากผู้จัดการคนหนึ่งไปยังอีกคนหนึ่งได้ ในกรณีดังกล่าว คุณสามารถจัดเตรียมตัวดำเนินการมอบหมายการย้ายได้
นี่เป็นแหล่งข้อมูลที่ดีเยี่ยมสำหรับการเรียนรู้เกี่ยวกับกฎห้าประการ – https://www.feabhas.com/sites/default/files/2016-06/Rule%20of%20the%20Big%20Five.pdf