Copying Constructor và Assignment Constructor

Trong bài này chúng ta sẽ cùng tìm hiểu về Copying ConstructorAssignment Constructor, hãy xem ý nghĩa của chúng là gì và chúng được call khi nào.

1. Assignment Operator

Assignment Constructor dùng để thay thế data của một đối tượng đã được khởi tạo bằng data của một đối tượng khác. Hãy xem ví dụ sau →

Ở ví dụ này, sau khi đối tượng obj1 được khởi tạo, nó được gán bằng đối tượng obj2. Do dấu = được dùng để gán obj2 cho obj1 sau khi obj1 đã được khởi tạo rồi nên operator= sẽ được gọi.

2. Copying Operator

Khác với Assignment Constructor, Copying Constructor dùng để khởi tạo một đối tượng chưa từng được khởi tạo trước đó. Hãy xem ví du sau →

obj2 được khai báo và gán giá trị đồng thời, tức là obj2 chưa từng được khởi tạo trước khi gán bằng obj1 ⇒ Trong trường hợp này Copying Constructor sẽ được gọi.

3. Copying Constructor và Assignment Constructor

Chúng ta đã hiểu về Copying ConstructorAssignment Constructor cùng với các ví dụ riêng lẻ về chúng. Giờ hãy cùng xem kiểm chứng lại khi chúng cùng xuất hiện trong cùng 1 ví dụ →

Ở đây phép gán đầu tiên sẽ call đến Copying Constructor vì lúc đó obj2 chưa được khởi tạo, trong khi đó phép gán thứ 2 sẽ call đến Assignment Constructorobj3  đã được khởi tạo trước khi gán.

Output của chương trình →

— Phạm Minh Tuấn (Shun) —