Skip to main content

Trình xây dựng bản sao là gì?

Một hàm tạo sao chép là một hàm đặc biệt trong C ++ và các ngôn ngữ khác bị ảnh hưởng bởi C ++, sao chép một đối tượng mã hóa.Lập trình viên thực hiện điều này bằng cách thêm khai báo trình xây dựng bản sao và tham chiếu một đối tượng.Chủ yếu, điều này có lợi cho lập trình viên bằng cách tiết kiệm thời gian, nhưng nó cũng đảm bảo rằng lập trình viên không nhập mã hóa đối tượng không chính xác.Khi bản sao được tạo, nó phải có một con trỏ bộ nhớ khác hoặc nó sẽ chỉ vào cùng một phần mà đối tượng gốc đang trỏ.Một trong những nhược điểm chính của việc sử dụng các hàm tạo sao chép là chúng không thể hoạt động độc lập;Nếu đối tượng gốc bị xóa, thì bản sao cũng sẽ được. Khi một lập trình viên sử dụng trình xây dựng bản sao, anh ta hoặc cô ta đang nói với mã để sao chép một đối tượng đã được liệt kê trong mã.Để làm điều này, trước tiên, lập trình viên phải sử dụng một tuyên bố để nói với mã hóa để thực hiện chức năng sao chép.Lập trình viên cũng phải tham chiếu một đối tượng khác, vì vậy đối tượng phải được xây dựng hoặc sẽ không có cách nào để thực hiện bản sao.Thay vì phải gõ lại các chức năng tương tự và mã hóa lại, lập trình viên chỉ có thể thêm một tham chiếu và đối tượng sẽ sẵn sàng.Điều này có một lợi ích ẩn khác trong mã hóa nhất quán và chính xác.Miễn là đối tượng gốc được mã hóa chính xác, đối tượng được sao chép cũng sẽ có mã hóa chính xác.Cả hai lợi ích này là rõ ràng nhất với các đối tượng phức tạp, nhưng các lập trình viên cũng có thể được hưởng lợi từ việc sao chép các đối tượng đơn giản. Trong các ngôn ngữ C ++, nhiều chức năng yêu cầu một con trỏ bộ nhớ.Điều này cho biết chức năng chính xác nơi để xem trong bộ nhớ cho một số thông tin nhất định hoặc nơi nó có thể lưu trữ dữ liệu.Lập trình viên phải chỉ định một con trỏ bộ nhớ mới khi một hàm tạo sao chép được sử dụng;Nếu không, hai đối tượng sẽ sử dụng cùng một không gian bộ nhớ.Nhìn bề ngoài, điều này có vẻ không xấu, nhưng nó có thể dẫn đến sự không nhất quán.Ví dụ: nếu cả hai đối tượng chia sẻ cùng một con trỏ và một đối tượng được sử dụng để gửi các ứng dụng cho vay trong khi đối tượng được sao chép được thực hiện để gửi các ứng dụng thẻ tín dụng, thì tất cả các ứng dụng thẻ tín dụng sẽ được lưu trữ với các ứng dụng cho vay.Hãy cảnh giác xóa một đối tượng, bởi vì các đối tượng của hàm tạo sao chép không thể hoạt động độc lập.Nếu lập trình viên xóa đối tượng gốc, thì đối tượng được sao chép sẽ không có gì để tham khảo.Không có mã để tham khảo, đối tượng được sao chép sẽ không thể thực hiện nhiệm vụ của mình và sẽ trở nên vô dụng.