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

Cách truyền đối tượng vào hàm trong C++


Có bốn cách truyền đối tượng vào hàm. Giả sử bạn có một lớp X và muốn truyền nó vào hàm fun, thì:

Truyền theo giá trị (Pass by Value)

Cách này tạo một bản sao nông (shallow copy) cục bộ của đối tượng trong phạm vi hàm. Các thay đổi bạn thực hiện ở đây sẽ không phản ánh lại đối tượng được truyền vào. Ví dụ:

Khai báo

void fun(X x);

Gọi hàm

X x; fun(x);

Truyền theo tham chiếu (Pass by Reference)

Cách này truyền tham chiếu của đối tượng vào hàm. Các thay đổi bạn thực hiện ở đây sẽ phản ánh lại đối tượng được truyền vào. Không có bản sao của đối tượng nào được tạo ra. Ví dụ:

Khai báo

void fun(X &x);

Gọi hàm

X x; fun(x);

Truyền theo tham chiếu hằng (Pass by const Reference)

Cách này truyền một tham chiếu hằng (const reference) của đối tượng vào hàm. Bạn không thể sửa đổi/gán lại đối tượng ở đây trực tiếp (nhưng có thể sử dụng các phương thức của nó để làm điều đó). Điều này hữu ích nếu bạn muốn hàm chỉ có một bản sao chỉ đọc (read-only) của đối tượng. Không có bản sao của đối tượng nào được tạo ra. Ví dụ:

Khai báo

void fun(const X &x);

Gọi hàm

X x; fun(x);

Truyền theo con trỏ hằng (Pass by const Pointer)

Cách này truyền một con trỏ hằng (const pointer) của đối tượng vào hàm. Bạn không thể sửa đổi/gán lại con trỏ ở đây. Điều này hữu ích nếu bạn muốn hàm chỉ có địa chỉ của đối tượng này trong con trỏ. Không có bản sao của đối tượng nào được tạo ra. Ví dụ:

Khai báo

void fun(const X *x);

Gọi hàm

X x; fun(&x);

Truyền theo con trỏ (Pass by Pointer)

Cách này truyền một con trỏ của đối tượng vào hàm. Điều này tương tự như truyền tham chiếu của đối tượng. Không có bản sao của đối tượng nào được tạo ra. Ví dụ:

Khai báo

void fun(X *x);

Gọi hàm

X x; fun(&x);