Hàm trong C++

Một phần của tài liệu Bài giảng lập trình hướng đối tượng và c++ (Trang 26 - 27)

Trong ngôn ngữ C cổ (không phải là ngôn ngữ C chuẩn mà chúng ta dùng hiê ̣n nay )

chúng ta có thể thực hiện việc gọi hàm với số lượng tham số cũng như kiểu tham số tùy ý mà trình biên dịch sẽ không phàn nàn gì cả. Tất cả dường như đều tốt cho tới khi chúng ta chạy chương trình. Có thể chúng ta sẽ nhận được các kết quả rất khó hiểu mà không có bất cứ một dấu hiê ̣u hay gợi ý nào về chúng . Đây có lẽ là một trong các lý do làm cho C trở thành một ngôn ngữ được đánh giá là ngôn ngữ Assembly cấp cao . Ngôn ngữ C chuẩn và

C++ ngày nay có một cơ chế gọi là nguyên m ẫu hay bản mẫu hàm (function prototype ).

Với cơ chế này chúng ta cần khai báo kiểu của các tham số của hàm, kiểu của hàm khi khai báo và định nghĩa chúng . Sự khai báo hay mô tả rõ ràng này được gọi là biểu mẫu của hàm. Khi hàm được gọi trình biên di ̣ch sẽ sử dụng biểu mẫu của hàm để kiểum tra xem các tham số được truyền có đúng kiểu, số lượng cũng như giá tri ̣ trả về của hàm có được xử lý đúng hay không . Nếu như có các lỗi trong quá trình kiểm tra xảy ra trình biên dịch sẽ thông báo ngay cho lâ ̣p trình viên biết trong quá trình biên di ̣ch.

Cú pháp khai báo một hàm như sau:

<kiểu trả về của hàm > <tên hàm>(<danh sách các kiểu tham số và tên ngăn cách nhau bởi dấu phẩy>);

Ví dụ: int max(int x, int y);

Về bản chất chúng ta không cần có các tên tham biến , chúng chỉ thực sự cần khi chúng ta sử dụng chúng trong việc định nghĩa các hàm . Tuy nhiên điều này cũng không phải là bắt buộc đối với C++ (trong C là bắt buộc). Chúng ta có thể có một tham số nào đó không có tên và nó sẽ không được sử dụng trong thân hàm (tất nhiên vì nó không có tên).

Khi chúng ta gọi tới hàm đó chúng ta vẫn phải truyền đúng c ác tham số. Tuy nhiên tác giả của hàm đó sau đó vẫn có thể sử dụng tham số ở đâu đó mà không cần thiết phải thay đổi các lời gọi hàm. Điều này rất tiê ̣n khi chúng ta không muốn có các lời cảnh báo về viê ̣c không sử dụn g một tham số nào đó trong thân hàm . C và C++ có hai cách khác nhau để đi ̣nh nghĩa danh sách các tham số . Nếu chúng ta có một hàm func (), C++ sẽ hiểu là hàm này không có tham số , C la ̣i hiểu là hàm này có thể có bất kỳ th am số nào. Mô ̣t hàm

func(void) sẽ được hiểu là không có tham số trong cả C và C ++. Mô ̣t trường hợp nữa xảy ra là khi chúng ta không xác đi ̣nh được số tham số cũng như kiểu tham số của hàm mà chúng ta muốn khai báo (gọi là mộ t danh sách tham biến: variable argument list ). Khi đó chúng ta sẽ sử dụng ký pháp (…). Tuy nhiên nên ha ̣n chế sử dụng nó trong C ++, chúng ta có nhiều cách khác để đạt được kết quả này mà không cần tới ký pháp đó.

20

Các giá trị trả về của hàm

Trong nguyên mẫu hàm chúng ta buộc phải chỉ rõ kiểu của hàm , nếu mô ̣t hàm không có kiểu trả về thì kiểu của nó là void . Trong mỗi mô ̣t thân hàm có kiểu bao giờ cũng có ít nhất mô ̣t câu lê ̣nh return . Khi gă ̣p lê ̣nh này trong quá trình thực hiê ̣n , hàm sẽ kết thúc.Trong các hàm không kiểu cũng có thể dùng return để thoát khỏi hàm . Mô ̣t trong các điểm ma ̣nh của ngôn ngữ C và C++ là một thư viện hàm rất phong phú và linh hoạt . Để sử dụng chúng, lâ ̣p trình viên chỉ cần thực hiê ̣n include các file header chứa các prototype của chúng trong chương trình, phần còn la ̣i sẽ tự do trình biên di ̣ch và trình liên kết thực hiê ̣n .

Chúng ta có thể tạo ra các thư vi ện hàm riêng cho mình để sử dụng. Tuy nhiên hãy xem kỹ phần manual của trình biên di ̣ch trước khi thực hiê ̣n.

Một phần của tài liệu Bài giảng lập trình hướng đối tượng và c++ (Trang 26 - 27)

Tải bản đầy đủ (PDF)

(169 trang)