Chúng ta biết rằng hầu hết người dùng chỉ yêu cầu một lời chào mà thôi. Điều này có nghĩa là chúng ta có thể sử dụng hình thức chào sau đây thường xuyên hơn những cái khác:
1 |
NewGreet("Good morning", 1); |
Chúng ta có thể muốn bỏ qua việc truyền tham số là “1”, và kỳ vọng rằng hàm sẽ đủ thông minh để đoán chúng ta muốn làm gì. Có hợp lý để mong đợi rằng bất kỳ hàm nào đều có thể xử lý theo cách thuận tiện như vậy ?
Câu trả lời là có, và cơ chế để chúng ta có thể làm được việc này là sử dụng “tham số mặc định” (default parameters). Chúng ta có thể sửa đổi khai báo tham số hình thức thứ hai bằng cách sử dụng một cụm từ:
= value
để báo hiệu rằng chúng ta muốn trình biên dịch giả định giá trị mặc định cho tham số khi chúng ta bỏ qua nó trong lời gọi hàm. Nếu chúng ta khai báo hàm theo cách sau →
1 |
NewGreet(string greet, int repeats = 1) |
thì trình biên dịch sẽ xử lý một lời gọi hàm với một tham số như sau →
1 |
NewGreet("Hello"); |
như thể nó được gọi như sau →
1 |
NewGreet("Hello", 1); |
Bây giờ hãy xem code bên dưới →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> using namespace std; void NewGreet(string greet, int repeats = 1) { for(int i = 0; i < repeats; i++) { cout << greet << endl; } } int main(void) { NewGreet("Hello", 2); NewGreet("Good morning"); NewGreet("Hi", 1); return 0; } |
Hãy để ý sự khác nhau trong các lời gọi hàm. Chương trình sẽ cho ra kết quả như sau →
1 2 3 4 |
Hello Hello Good morning Hi |
Như bạn đã thấy, nếu chúng ta truyền vào tham số trong lời gọi hàm thì giá trị mặc định sẽ được thay thế bởi giá trị mà chúng ta truyền vào,