Phương thức call by value trong C++ của các đối số truyền vào một hàm sao chép giá trị thực của một đối số vào tham số chính thức của hàm. Trong trường hợp này, các thay đổi được thực hiện cho tham số bên trong hàm không ảnh hưởng đến đối số.
Theo mặc định, lập trình C++ sử dụng call by value để chuyển đối số. Nói chung, nó có nghĩa là mã trong một hàm không thể thay đổi các đối số được sử dụng để gọi hàm. Hãy xem xét hàm swap() như sau.
#include <iostream> using namespace std; /* khai bao prototype */ void swap(int x, int y); int main() { // dinh nghia cac bien local int a = 100; int b = 200; cout << "Truoc swap, gia tri cua a : " << a << endl; cout << "Truoc swap, gia tri cua b : " << b << endl; // goi ham swap() de hoan doi cac gia tri swap(a, b); cout << "Sau swap, gia tri cua a : " << a << endl; cout << "Sau swap, gia tri cua b : " << b << endl; return 0; } /* * ham hoan doi cac gia tri */ void swap(int x, int y) { int temp; temp = x; x = y; y = temp; return; }
Kết quả:
Truoc swap, gia tri cua a : 100 Truoc swap, gia tri cua b : 200 Sau swap, gia tri cua a : 100 Sau swap, gia tri cua b : 200
Kết quả trên cho thấy rằng không có thay đổi trong các giá trị, mặc dù chúng đã được thay đổi bên trong hàm.