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

Thành ngữ copy-and-swap trong C ++ là gì?


Bài tập bao gồm 2 bước, xé 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. Thành ngữ sao chép và hoán đổi là một giải pháp cho điều 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 sau đó sẽ bị hủy bằ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 ba thứ - một hàm tạo bản sao, một hàm hủy và một hàm 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, thành viên. 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ộ hàm tạo bản sao và toán tử gán để đạt được điều tương tự.