Ngôn ngữ lập trình C++và cấu trúc dữ liệu part 7

Tham khảo tài liệu 'ngôn ngữ lập trình c++và cấu trúc dữ liệu part 7', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | Việc tạo ra mã lệnh không xảy ra cho đến khi hàm thực sự được gọi bằng một lệnh trong chương trình. Trong chương trình TEMPABS nó xảy ra trong biểu thức chẳng hạn như abs ỉntl ở lệnh cout nabs intl abs intl Khi trình biên dịch thấy một lời gọi hàm như vậy nó biết rằng kiểu sử dụng là ỉnt bởi vì đó là kiểu của đối sô intl. Bởi vậy nó tạo ra một phiên bản cụ thể của hàm abs cho kiểu int và thay thế int bắt kỳ đâu nó thấy tên T trong mảu hàm. Đây gọi là cụ thể mẫu hàm instatiating the function template và mỗi phiên bản cụ thể của hàm được gọi là một hàm mẫu nghĩa là một hàm mẫu là một cụ thể rõ ràng của một mẫu hàm . Trình biên dịch cũng tạo ra một. lời gọi tới hàm mới được cụ thể và chèn nó vào chương trình nơi cố hàm abs intl . Tương tự biểu thức abs lonl làm cho trình biên dịch tạo ra một phiên bán của abs làm việc với kiểu long cũng như lời gọi tới hàm này trái lại lời gọi abs dubl tạo ra một hàm làm việc trên kiểu double. Tất nhiên trình biên dịch đủ thông minh để tạo ra duy nhất một phiên bản abs cho mỗi kiểu dữ liêu. Do đó mặc dù có hai lời gọi tới phiên bản int của hàm nhưng chỉ có một mã lệnh thực hiện cho phiên bản này. Chú ý rằng số lượng bộ nhó RAM mà chương trình sử dụng là bằng nhau dù sử dụng dạng mẫu hay viết ba hàm riồng biệt. Những gì chúng ta tiết kiêm được là không phải gõ ba hàm riêng biệt vào file nguồn. Điều này làm cho chương trình ngắn hơn và dê hiểu hơn. Ngoài ra nếu muốn thay đổi cách làm việc của hàm thì chúng ta chỉ cần thay đổi ở một nơi trong chương trình thay vì phải thay đổi ở ba nơi khi không sử dụng mẫu. Trình biên dịch quyết định cách biên dịch hàm dựa trên toàn bộ kiểu dữ liệu được dùng trong đối số hoặc các đối số của lời gọi hàm. Kiểu trả về không tham gia vào quyêt định này. Điều này tương tự như cách mà trình biên dịch quyết định gọi hàm nào trong sô các hàm được chổng. Một mẫu hàm không thực sự là một hàm bởi vì nó không thực sự sinh ra mã chương trình để đặt vào trong bộ nhớ. Thay vào đó nó là một mẫu pattern hoặc một bản .

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
284    75    3    29-04-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.