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

Truyền đối tượng cho hàm trong C++


Có 4 cách truyền đối tượng cho hàm. Giả sử lớp X truyền cho hàm fun:

1. Truyền bằng giá trị (Pass by value)

Tạo bản sao nông (shallow copy) cục bộ trong phạm vi hàm. Thay đổi không phản ánh ra đối tượng gốc.

// Khai báo
void fun(X x);
// Gọi
X x; fun(x);

2. Truyền bằng tham chiếu (Pass by reference)

Truyền tham chiếu đến đối tượng. Thay đổi sẽ phản ánh ra đối tượng gốc. Không tạo bản sao.

// Khai báo
void fun(X &x);
// Gọi
X x; fun(x);

3. Truyền bằng tham chiếu hằng (Pass by const reference)

Truyền tham chiếu const. Không thể sửa/gán trực tiếp đối tượng ở đây (nhưng có thể dùng phương thức của nó làm vậy). Hữu ích khi hàm chỉ cần bản sao chỉ đọc. Không tạo bản sao.

// Khai báo
void fun(X const &x);
// Gọi
X x; fun(x);

4. Truyền bằng con trỏ hằng (Pass by const pointer)

Truyền con trỏ const. Không thể sửa/gán con trỏ ở đây. Hữu ích khi hàm chỉ cần địa chỉ đối tượng. Không tạo bản sao.

// Khai báo
void fun(X const *x);
// Gọi
X x; fun(&x);

5. Truyền bằng con trỏ (Pass by pointer)

Truyền con trỏ đến đối tượng. Tương tự truyền tham chiếu. Không tạo bản sao.

// Khai báo
void fun(X *x);
// Gọi
X x; fun(&x);