Computer >> Máy Tính >  >> Lập trình >> C ++

Quy tắc Năm trong C ++ 11 là gì?


Quy tắc năm được áp dụng trong C ++ để quản lý tài nguyên. Quản lý tài nguyên giải phóng khách hàng khỏi phải lo lắng về thời gian tồn tại của đối tượng được quản lý, có khả năng loại bỏ rò rỉ bộ nhớ và các vấn đề khác trong mã C ++. Nhưng việc quản lý này phải trả giá đắt. Quy tắc của The Big Five nói rằng nếu bạn phải viết một trong các hàm sau thì bạn phải có một chính sách cho tất cả chúng. Nếu chúng ta có Object Foo thì chúng ta có thể có FooManager xử lý Foo tài nguyên. Khi triển khai FooManager, có thể bạn sẽ cần triển khai tất cả các chức năng sau -

  • trình hủy - Khi người quản lý này vượt ra ngoài phạm vi, nó sẽ giải phóng tất cả các tài nguyên mà nó đang quản lý.

  • toán tử chuyển nhượng - Nếu bạn không cung cấp, trình biên dịch sẽ tạo một toán tử gán mặc định. Thao tác gán mặc định là một chức năng sao chép thông minh dành cho thành viên và thực hiện một bản sao nông chứ không phải một bản sao sâu. Điều này có thể gây ra các vấn đề như rò rỉ bộ nhớ, gán sai.

  • sao chép hàm tạo - Hàm tạo bản sao do trình biên dịch cung cấp thực hiện sao chép thành viên của tất cả các thuộc tính của FooManager. Điều này đặt ra các vấn đề tương tự như toán tử chuyển nhượng.

  • di chuyển hàm tạo - Việc sao chép các đối tượng có thể tốn kém vì nó liên quan đến việc tạo, sao chép và sau đó phá hủy các đối tượng tạm thời. C ++ 11 đã giới thiệu khái niệm tham chiếu giá trị r. Một tham chiếu giá trị r có thể được liên kết rõ ràng với một giá trị r. Giá trị r là một đối tượng không có tên. Nói cách khác là một đối tượng tạm thời. Tham chiếu giá trị r này có thể được sử dụng trong một phương thức khởi tạo để tạo tham chiếu đến giá trị r được truyền cho nó.

  • di chuyển toán tử chuyển nhượng - Sẽ rất hữu ích khi chỉ có một tài nguyên tại một thời điểm. Quyền sở hữu tài nguyên này có thể được chuyển từ người quản lý này sang người quản lý khác. Trong những trường hợp như vậy, bạn có thể cung cấp toán tử chỉ định di chuyển.

Đây là một tài nguyên tuyệt vời để tìm hiểu về quy tắc năm - https://www.feabhas.com/sites/default/files/2016-06/Rule%20of%20the%20Big%20Five.pdf.