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

Copy-and-Swap Idiom trong C ++

Bài tập bao gồm 2 bước, xé bỏ trạng thái cũ của một đối tượng và xây dựng trạng thái mới cho nó. Hàm hủy được sử dụng cho bước đầu tiên và một hàm tạo sao chép thực hiện bước thứ hai.

Thực hiện cả hai điều này là đơn giản. Nhưng khi quá tải toán tử gán, nó có thể trở nên khá khó thực hiện. Copy và swapidiom là một giải pháp tương tự.

Thành ngữ này sử dụng hàm tạo bản sao để tạo bản sao cục bộ của dữ liệu. Sau đó, nó hoán đổi dữ liệu cũ với dữ liệu mới bằng cách sử dụng chức năng hoán đổi. Bản sao tạm thời bị phá hủy bằng cách sử dụng trình hủy. Cuối cùng, chúng tôi chỉ có một bản sao của dữ liệu mới.

Vì vậy, thành ngữ copy-and-swap cần có ba điều

  • copy-constructor
  • copy-constructor
  • trình hủy
  • chức năng hoán đổi.

Một hàm hoán đổi là một hàm không ném để hoán đổi hai đối tượng của một lớp, themember.

Lưu ý :Bạn không được sử dụng hàm std ::swap vì hàm này sử dụng nội bộ toán tử gán cấu trúc bản sao và toán tử gán để đạt được điều tương tự.