Thứ Năm, 13 tháng 7, 2017

1. Hàm chồng (function overloading)

C++ cho phép chồng các hàm, tức là các hàm khác nhau có thể trùng tên. Ví dụ:

int max( int x, int y);                     (1)
double max( double x, double y); (2)

Trình biên dịch sẽ dùng số lượng và kiểu của các tham số để phân biệt các hàm chồng. Các hàm chồng không phân biệt bới kiểu hàm, vì lúc gọi hàm không nhận biết được.

Khi 1 hàm được gọi, trình biên dịch sẽ so sánh các đối số với các tham số của các hàm chồng về số lượng và kiểu, sau đó gọi hàm phù hợp nhất.

Ví dụ: double z, x = 7.9; z = max(1.0, x); hàm (2) được gọi.

Khi không tìm thấy phiên bản nào có tham số phù hợp hoàn toàn, C++ sẽ tìm đến những phiên bản hàm mà đối số có thể phù hợp thông qua ép kiểu:

• Char, unsigned char, short sẽ được ép kiểu ngầm định sang int.

• Unsigned short có thể tự ép kiểu ngầm định sang int hoặc unsigned int, tùy vào kích thước của giá trị.

• Float có thể tự ép kiểu ngầm định sang double.

Ví dụ: double z, x = 7.9; z = max(1, x); số 1 là int nên chương trình báo lỗi ngay khi dịch.

2. Inline functions (hàm nội tuyến) là một loại hàm trong ngôn ngữ lập trình C/C++. Với việc sử dụng từ khoá inline, hàm này được sử dụng để đề nghị (không phải là bắt buộc) với trình biên dịch chèn code của hàm đó tại địa chỉ mà nó được gọi.

Nếu muốn sử dụng inline functions, chỉ cần đặt từ khoá inline ở trước một hàm bình thường lúc khai báo hoặc ở dòng đầu tiên của hàm lúc định nghĩa. Khi sử dụng ta cứ gọi nó ra như gọi một hàm bình thường.

Inline functions có ích trong việc tiết kiệm thời gian, tuy nhiên nếu sử dụng với các hàm có kích thước lớn có thể làm cho chương trình chạy chậm hơn. Do đó chỉ nên sử dụng inline với các chương trình nhỏ được gọi ra thường xuyên. Nếu hàm có chứa các biến static, các lệnh chu trình, lệnh goto, lệnh switch, hàm đệ quy chắc chắn từ khoá inline sẽ bị bỏ qua.


0 nhận xét:

Đăng nhận xét

Categories

Sample Text

Được tạo bởi Blogger.

Must Read

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Popular Posts

Video

Popular Posts

Our Facebook Page