Phương pháp truyền tham chiếu có một giới hạn quan trọng và rõ ràng. Nếu một tham số được khai báo được truyền bằng tham chiếu (vì vậy nó được đứng trước bởi kí tự &), tham số thực tế tương ứng của nó phải là một biến. Một tham số thực tế truyền vào cho tham số hình thức bằng cách truyền tham trị thì có thể là một biểu thức nói chung, do đó chúng ta có thể truyền vào không chỉ một biến mà còn là có thể là một biểu thức hoặc thậm chí là một lời gọi hàm nữa.
Hãy xem ví dụ sau →
1 2 3 4 5 6 7 8 9 |
void ByRef(int &par) { par = 0; } void ByVal(int par) { par = 0; } |
Đối với hàm ByVal, các lời gọi hàm sau đây đềuhợp lệ
- ByVal(i);
- ByVal(i + 2);
- ByVal(intfun(0));
Đối với hàm ByRef, chỉ có lời gọi sau hợp lệ mà thôi (tất cả các lời gọi khác sẽ gây lỗi biên dịch):
- ByRef(i)