Video: Lập trình hướng đối tượng C++: 19 Phương thức khởi tạo sao chép 2025
Nhà xây dựng là một hàm đặc biệt mà C ++ tự động gọi khi một đối tượng được tạo ra để cho phép đối tượng tự khởi tạo. Có hai biến thể đặc biệt của hàm tạo được gọi là các trình khởi tạo sao chép và .
Một nhà xây dựng bản sao là nhà xây dựng mà C ++ sử dụng để tạo bản sao của các đối tượng. Nó mang tên X:: X (const X &), trong đó X là tên của lớp. Nghĩa là, nó là hàm tạo của lớp X, lấy đối số của nó là tham chiếu đến một đối tượng của lớp X . Điều này nghe có vẻ vô ích, nhưng chỉ mất một phút để khám phá lý do tại sao C + + nhu cầu beasties như vậy.
Hãy suy nghĩ một chút về những gì xảy ra khi bạn gọi một hàm như sau:
void fn (Student fs) {// … cùng một kịch bản; đối số khác …} int main (int argcs, char * pArgs []) {Học sinh ms; fn (ms); return 0;}
Trong cuộc gọi đến fn (), C ++ truyền một bản sao của đối tượng ms chứ không phải đối tượng chính nó.
Bây giờ xem xét ý nghĩa của việc tạo ra một bản sao của một đối tượng. Trước tiên, phải mất một nhà xây dựng để tạo ra một đối tượng, ngay cả một bản sao của một đối tượng hiện có. C ++ có thể tạo một constructor sao chép mặc định sao chép đối tượng hiện tại vào một đối tượng mới một byte một lúc.
Đó là những ngôn ngữ cũ như C do. Nhưng nếu lớp không muốn một bản sao đơn giản của đối tượng? Điều gì sẽ xảy ra nếu người khác yêu cầu? (Bỏ qua "tại sao?" Trong một thời gian ngắn.) Lớp học cần phải xác định chính xác cách sao chép sẽ được tạo ra.
Vì vậy, C ++ sử dụng một constructor sao chép trong ví dụ trước để tạo một bản sao của đối tượng ms trên stack trong suốt cuộc gọi hàm fn (). Nhà xây dựng bản sao đặc biệt này sẽ là Sinh viên:: Sinh viên (Sinh viên &) - nói rằng ba lần nhanh chóng.