Trong hướng dẫn này, chúng ta sẽ tìm hiểu các đối số mặc định của C ++ và cách hoạt động của chúng với sự trợ giúp của các ví dụ.
Trong lập trình C ++, chúng ta có thể cung cấp các giá trị mặc định cho các tham số của hàm.
Nếu một hàm có đối số mặc định được gọi mà không truyền đối số, thì các tham số mặc định sẽ được sử dụng.
Tuy nhiên, nếu các đối số được truyền trong khi gọi hàm, các đối số mặc định sẽ bị bỏ qua.
Hoạt động của các đối số mặc định

Chúng ta có thể hiểu hoạt động của các đối số mặc định từ hình trên:
- Khi
temp()
được gọi, cả hai tham số mặc định đều được hàm sử dụng. - Khi
temp(6)
được gọi, đối số đầu tiên sẽ trở thành6
trong khi giá trị mặc định được sử dụng cho tham số thứ hai. - Khi
temp(6, -2.3)
được gọi, cả hai tham số mặc định đều bị ghi đè, dẫn đếni = 6
vàf = -2.3
. - Khi
temp(3.4)
được truyền, hàm sẽ hoạt động theo cách không mong muốn vì không thể truyền đối số thứ hai mà không truyền đối số đầu tiên.
Do đó,3.4
được chuyển làm đối số đầu tiên. Vì đối số đầu tiên đã được xác định làint
, giá trị thực sự được truyền là3
.
Ví dụ: Đối số mặc định
#include using namespace std; // defining the default arguments void display(char = '*', int = 3); int main() ( int count = 5; cout << "No argument passed: "; // *, 3 will be parameters display(); cout << "First argument passed: "; // #, 3 will be parameters display('#'); cout << "Both arguments passed: "; // $, 5 will be parameters display('$', count); return 0; ) void display(char c, int count) ( for(int i = 1; i <= count; ++i) ( cout << c; ) cout << endl; )
Đầu ra
Không có đối số nào được truyền: *** Đối số đầu tiên được truyền: ### Cả hai đối số được truyền: $$$$$
Đây là cách chương trình này hoạt động:
display()
được gọi mà không truyền bất kỳ đối số nào. Trong trường hợp này, hãydisplay()
sử dụng cả tham số mặc địnhc = '*'
vàn = 1
.display('#')
được gọi chỉ với một đối số. Trong trường hợp này, đầu tiên trở thành'#'
. Tham số mặc định thứ hain = 1
được giữ lại.display('#', count)
được gọi với cả hai đối số. Trong trường hợp này, các đối số mặc định không được sử dụng.
Chúng ta cũng có thể xác định các tham số mặc định trong chính định nghĩa hàm. Chương trình dưới đây tương đương với chương trình trên.
#include using namespace std; // defining the default arguments void display(char c = '*', int count = 3) ( for(int i = 1; i <= count; ++i) ( cout << c; ) cout << endl; ) int main() ( int count = 5; cout << "No argument passed: "; // *, 3 will be parameters display(); cout << "First argument passed: "; // #, 3 will be parameters display('#'); cout << "Both argument passed: "; // $, 5 will be parameters display('$', count); return 0; )
Những điều cần ghi nhớ
- Khi chúng tôi cung cấp giá trị mặc định cho một tham số, tất cả các tham số tiếp theo cũng phải có giá trị mặc định. Ví dụ,
// Invalid void add(int a, int b = 3, int c, int d); // Invalid void add(int a, int b = 3, int c, int d = 4); // Valid void add(int a, int c, int b = 3, int d = 4);
- Nếu chúng ta đang xác định các đối số mặc định trong định nghĩa hàm thay vì nguyên mẫu hàm, thì hàm phải được định nghĩa trước khi gọi hàm.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )