Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Khác biệt giữa toán tử gán và copy constructor trong C++


Copy constructor (Hàm tạo sao chép) và toán tử gán (assignment operator) đều được dùng để khởi tạo một đối tượng từ một đối tượng khác. Khác biệt chính giữa chúng là: copy constructor tạo một khối bộ nhớ riêng biệt cho đối tượng mới. Nhưng toán tử gán không tạo không gian bộ nhớ mới. Nó dùng biến tham chiếu để trỏ đến khối bộ nhớ cũ.

Copy Constructor (Cú pháp)

classname (const classname &obj) { // thân constructor }

Toán tử gán (Cú pháp)

classname Ob1, Ob2; Ob2 = Ob1;

Hãy xem chi tiết sự khác biệt giữa Copy constructor và Toán tử gán.

Copy ConstructorToán tử gán
Copy constructor về cơ bản là một constructor được nạp chồngToán tử gán về cơ bản là một toán tử
Khởi tạo đối tượng mới với một đối tượng đã tồn tạiGán giá trị của một đối tượng cho đối tượng khác, cả hai đã tồn tại
Copy constructor dùng khi tạo đối tượng mới từ đối tượng hiện cóToán tử này dùng khi muốn gán đối tượng hiện có cho đối tượng mới
Cả hai đối tượng dùng vị trí bộ nhớ riêng biệtMột vị trí bộ nhớ nhưng các biến tham chiếu khác nhau trỏ đến cùng vị trí
Nếu không định nghĩa copy constructor, trình biên dịch cung cấp một cái mặc địnhNếu không nạp chồng toán tử gán thì sẽ sao chép bitwise (bitwise copy)