Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Rule of Three vs Rule of Five trong C++


Rule of Three là quy tắc ngón tay cái trong C++: nếu lớp cần bất kỳ một trong ba hàm sau định nghĩa tường minh:

  • Copy constructor
  • Assignment operator
  • Destructor

Thì có khả năng lớn cần cả ba.

Tại sao? Vì nếu lớp cần một trong ba, nó đang quản lý tài nguyên cấp phát động và sẽ cần các cái kia để làm đúng. Ví dụ cần assignment operator -> tạo bản sao đối tượng đang được copy by reference -> cấp phát tài nguyên -> cần copy constructor để copy và destructor để giải phóng.

Rule of Five mở rộng Rule of Three nhờ move semantics trong C++11. Cũng áp dụng cho quản lý tài nguyên, loại bỏ rò rỉ bộ nhớ. Quy tắc "Big Five" nói: nếu phải viết một trong năm hàm sau thì phải có chính sách cho tất cả:

  • Destructor
  • Assignment operator
  • Copy constructor
  • Move constructor
  • Move assignment operator

Tài nguyên: https://www.feabhas.com/sites/default/files/2016-06/Rule%20of%20the%20Big%20Five.pdf