3.4.1 Khai báo và định nghĩa hàm (1)

Một khai báo hàm nhằm thông báo cho trình biên dịch về tên, kiểu trả về và kiểu của tham số (nếu có). Cú pháp khai báo hàm (hoặc nguyên mẫu hàm – chúng ta có thể sử dụng các thuật ngữ này thay cho nhau) như sau

  • return_type mô tả kiểu dữ liệu của kết quả được trả về bởi hàm (ví dụ như chúng ta mong đợi rằng hàm sin sẽ trả về một giá trị của kiểu float vì dữ liệu int hoàn toàn không sử dụng được trong ngữ cảnh này); bạn có thể sử dụng bất kỳ kiểu dữ liệu nào của C++ như là một return_type, bao gồm cả một loại rất đặc biệt có tên là void; một hàm có kiểu trả về là void tức là sẽ không có kết quả nào được trả về bởi hàm đó; một hàm như vậy có thể có hiệu quả nhưng chắc chắn không có kết quả; nếu bạn bỏ qua các return_type, trình biên dịch giả định rằng hàm trả về giá trị kiểu int
  • function_name là một định danh tên hàm để phân biệt nó với tất cả các hàm khác (lưu ý: trái ngược với các biến, bạn có thể có nhiều hàm cùng tên, điều này gọi là overloading, chúng ta sẽ học cái này sau)
  • parameters_list (phải để bên trong dấu ngoặc đơn) là một danh sách các cặp “type name” đã được phân tách bằng dấu phẩy, danh sách có thể để trống nhưng cần phải có dấu ngoặc đơn; bạn có thể nhấn mạnh thực tế là hàm của bạn không có tham số bằng cách đặt từ khóa void bên trong ngoặc đơn, như sau (khai báo này mô tả một hàm có tên là fun, nó không trả lại kết quả và không có tham số):

Còn đây là ví dụ về 2 khai báo hàm tương đương:

Trong ngữ cảnh này, tên của tham số (number) không có ý nghĩa gì đối với trình biên dịch và trình biên dịch sẽ hoàn toàn bỏ qua nó; tuy nhiên nó có thể rất hữu ích cho những người đọc code của bạn và cố gắng để hiểu nó.

  • khai báo hàm kết thúc với một dấu chấm phẩy.

Mặc dù mỗi phần tử trong danh sách tham số giống như cú pháp của khai báo biến nhưng bạn không được phép khai báo nhiều tên tham số cùng một lúc. Bạn có thể làm được việc này:

nhưng bạn sẽ phải làm như sau nếu muốn khai báo 2 tham số của hàm