Đố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 đè.
Đây là một chương trình đơn giản để minh họa
#include <iostream>
using namespace std;
// Vi du mot ham voi default arguments,
// hàm co the duoc goi voi
// 2 doi so, 3 doi so hoac 4 doi so.
int sum(int x, int y, int z = 0, int w = 0) //gan gia tri mac dinh cho z,w bang 0
{
return (x + y + z + w);
}
int main()
{
// Text 1
cout << sum(10, 15) << endl;
// Text 2
cout << sum(10, 15, 25) << endl;
// Text 3
cout << sum(10, 15, 25, 30) << endl;
return 0;
}
Sử dụng IDE Online để chạy chương trình
Giải thích: Trong câu lệnh 1, chỉ có hai giá trị được truyền, do đó các biến z và w lấy giá trị mặc định là 0. Trong câu lệnh 2, ba giá trị được truyền, do đó giá trị của z bị ghi đè bằng 25. Trong câu lệnh 3, bốn giá trị được thông qua, do đó giá trị của z và w bị ghi đè tương ứng là 25 và 30.
- Chúng ta thử xóa 1 giá trị trong lệnh cout đầu tiên, chương trình sẽ như sau:
#include <iostream>
using namespace std;
// Vi du mot ham voi default arguments,
// hàm co the duoc goi voi
// 2 doi so, 3 doi so hoac 4 doi so.
int sum(int x, int y, int z = 0, int w = 0) //gan gia tri mac dinh cho z,w bang 0
{
return (x + y + z + w);
}
int main()
{
// Text 1
cout << sum(10) << endl;
// Text 2
cout << sum(10, 15, 25) << endl;
// Text 3
cout << sum(10, 15, 25, 30) << endl;
return 0;
}
Chạy thử chương trình ta sẽ nhận được báo lỗi
Nhận xét 1: Chúng ta phải cung cấp đủ đối số cho hàm. Nếu hàm cần 5 đối số và đã có 2 đối số mặc định thì ta cần truyền giá trị cho hàm ít nhất là 3 đối số còn lại.
- Chúng ta tiếp tục thử không gán giá trị cho w, chương trình sẽ như sau:
#include <iostream>
using namespace std;
// Vi du mot ham voi default arguments,
// hàm co the duoc goi voi
// 2 doi so, 3 doi so hoac 4 doi so.
int sum(int x, int y, int z = 0, int w) //gan gia tri mac dinh cho z,w bang 0
{
return (x + y + z + w);
}
int main()
{
// Text 1
cout << sum(10, 15) << endl;
// Text 2
cout << sum(10, 15, 25) << endl;
// Text 3
cout << sum(10, 15, 25, 30) << endl;
return 0;
}
Bấm Run để chạy chương trình, ta sẽ nhận báo lỗi:
Nhận xét 2: 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
Tóm lại:
- Đố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
Không có nhận xét nào:
Đăng nhận xét