LẬP TRÌNH C nâng cao -BÀI 6 - TEMPLATE (TIẾP)

BÀI 6: TEMPLATE (TIẾP THEO) Trình biên dịch và template Trong bài trước chúng ta thấy một điều hơi là lạ, đó là file header có chỉ thị #include file source . Tại sao như vậy ? Khi trình biên dịch gặp template, nó kiểm tra cú pháp, nhưng không biên dịch ngay | LẬP TRÌNH C C NÂNG CAO Yêu cầu trước khi đọc học xong Lập trình C C căn bản BÀI 6 TEMPLATE TIẾP THEO Trình biên dịch và template Trong bài trước chúng ta thấy một điều hơi là lạ đó là file header có chỉ thị include file source . Tại sao như vậy Khi trình biên dịch gặp template nó kiểm tra cú pháp nhưng không biên dịch ngay. Ví dụ nó gặp template class T nó không thể biên dịch vì nó không biết kiểu dữ liệu của T. Khi nó gặp instance đầu tiên của template ví dụ template int nó biên dịch và chúng ta có phiên bản với kiểu dữ liệu int của template. Khi nó gặp instance thứ hai của template ví dụ template double nó cũng lại biên dịch và chúng ta có phiên bản thứ hai của template phiên bản với kiểu dữ liệu double. Vân vân. Thông thường chúng ta viết định nghĩa lớp và nguyên mẫu các hàm của lớp đó ở file header đuôi .h rồi mới viết thân cho các hàm đó ở một file source đuôi .cpp mà file cpp này include luôn file header đó. Template phải làm ngược lại. Vì lí do nói trên cả định nghĩa lớp nguyên mẫu các hàm lẫn thân của các hàm đó của một lớp template phải được biên dịch cùng nhau. Do đó khi tách rời định nghĩa của một lớp template ra chứa trong một file header riêng file header đó phải include file source chứa thân các hàm của lớp template đó rồi một file nào khác muốn dùng template đó phải include cái file header đó. Ở đây còn một phần nữa về export tôi đã cắt đi. Có nhiều thứ sau này tôi cũng sẽ cắt đi nhằm giảm tải cho chương trình xuống đến mức tối thiểu nhất có thể được. Nhưng an tâm là những thứ quan trọng nhất đều có đầy đủ. Dùng từ khóa nào class hay typename Về cơ bản sự khác biệt giữa chúng là không rõ ràng cả 2 đều có cùng ý nghĩa và cùng cho kết quả như nhau bạn muốn dùng từ khóa nào cũng được. Nhưng có lúc bạn phải dùng từ khóa typename ví dụ CODE template typename T class Thing T SubType ptr Chúng ta muốn khai báo 1 con trỏ thuộc kiểu SubType của T nhưng C sẽ hiểu là chúng ta muốn nhân giá trị SubType của kiểu T với ptr Lúc này chúng ta bắt .

Không thể tạo bản xem trước, hãy bấm tải xuống
TÀI LIỆU MỚI ĐĂNG
272    23    1    30-11-2024
476    18    1    30-11-2024
12    26    1    30-11-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.