Đối số mặc định trong C++ giúp bạn có thể tự gán giá trị mặc định cho những đối số nếu bạn không cung cấp nó khi gọi hàm. Bài viết này mình sẽ giúp bạn cùng tìm hiểu một tính năng thú vị trong C++.
1. Đối Số Mặc Định
Đối số mặc định - Default Argument là giá trị mặc định sẽ được cung cấp cho hàm khi bạn xây dựng hàm, giá trị này sẽ được tự động gán nếu lời gọi hàm không cung cấp đối số tương ứng.
Trong trường hợp bạn cung cấp đối số cho đối số mặc định thì giá trị mặc định sẽ được ghi đè.
Ví dụ : Hàm có 4 tham số trong đó có 2 đối số mặc định, bạn có thể sử dụng hàm find này với 2, 3, hoặc 4 tham số.
Nếu khuyết tham số thứ 3, 4 thì giá trị mặc định sẽ được sử dụng
using namespace std;
int find(int a, int b, int c = 3, int d = 4) {
cout << a << " " << b << " " << c << " " << d << endl;
return a + b + c + d;
}
int main() {
cout << find(1, 2) << endl;
cout << find(1, 2, 10) << endl;
cout << find(1, 2, 10, 20) << endl;
return 0;
}
Output :
10
1 2 10 4
17
1 2 10 20
33
Giải thích :
- Hàm find(1, 2) vì khuyết đối số 3, và 4 nên c sẽ có giá trị mặc định là 3 và d có giá trị mặc định là 4
- Hàm find(1, 2, 10) vì khuyết đối số 4 d có giá trị mặc định là 4, giá trị của c đã được ghi đè thành 10
- Hàm find(1, 2, 10, 20) không bị khuyết đối số nên c được gán 10 và d được gán là 20
Chú ý : Bạn không thể xây dựng tham số thông thường sau tham số mặc định. Ví dụ xây dựng hàm như sau sẽ gây lỗi
using namespace std;
int find(int a, int b, int c = 3, int d) {
cout << a << " " << b << " " << c << " " << d << endl;
return a + b + c + d;
}
int main() {
cout << find(1, 2) << endl;
cout << find(1, 2, 10) << endl;
cout << find(1, 2, 10, 20) << endl;
return 0;
}
Output :
2. Những Chú Ý Về Đối Số Mặc Định
- Đối số mặc định khác với đối số là hằng số
- Đối số mặc định sẽ được ghi đè giá trị nếu lời gọi hàm cung cấp giá trị tương ứng cho nó
- Khi một đối số mặc định được khai báo thì tất cả các đối số sau nó đều phải là đối số mặc định