1. Trang chủ
  2. » Công Nghệ Thông Tin

C templates and advanced topics

8 364 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 415,3 KB

Nội dung

C++ TEMPLATE VÀ MỘT SỐ VẤN ĐỀ MỞ RỘNG Mục tiêu Tìm hiểu function template, class template giới thiệu số vấn đề mở rộng Nội dung     Function template Class template Bài tập thực hành Template Một số vấn đề mở rộng tài nguyên liên quan 1 Function Template Khái niệm Xét ví dụ hàm tìm Min số cho nhiều kiểu liệu khác nhau: // for ints int min(int a, int b) { return (a < b) ? a : b; } // for floats float min(float a, float b) { return (a < b) ? a : b; } // for chars char min(char a, char b) { return (a < b) ? a : b; } Với kiểu liệu khác (int, float, char…) phải viết hàm tìm Min tương ứng với kiểu liệu (overload) Điều gây dư thừa không đáng có chương trình Và hàm không đủ dùng trường hợp => Dùng Function Template Function Template hàm tổng quát cho phép dùng nhiều kiểu liệu khác cho tham số kết trả Chúng ta viết nhiều hàm cho kiểu liệu cụ thể template < template-argument-list > declaration Tất function template định nghĩa bắt đầu với từ khóa template theo sau danh sách tham số hình thức vây quanh cặp dấu (< >) Mỗi tham số hình thức đặt trước từ khóa class phân cách dấu phẩy: template template Lúc hàm tìm Min thay hàm Function Template nhất: template T min(T a, T b) { return (a < b) ? a : b; } Nhận xét - Dùng function template cần viết hàm cho nhiều kiểu liệu khác thay phải viết nhiều hàm cho kiểu liệu cụ thể Dùng function template giúp giảm kích thước tăng tính linh động chương trình 2 Class Template Khái niệm Xét ví dụ xây dựng lớp mảng cho nhiều kiểu liệu khác // Mang so nguyen class IntegerArray { private: int *m_pElement; // Viet cai dat cho lop }; // Mang so thuc class FloatArray { private: float *m_pElement; // Viet cai dat cho lop }; // Mang ky tu class CharArray { private: char *m_pElement; // Viet cai dat cho lop }; Với kiểu liệu khác (int, float, char…) phải xây dựng lớp mảng tương ứng cho kiểu liệu Điều gây dư thừa không đáng có chương trình Và lớp không đủ dùng trường hợp => Dùng Class Template Class Template lớp đối tượng tổng quát cho phép dùng nhiều kiểu liệu khác cho thuộc tính phương thức lớp Tương tự Function Template, Class Template khai báo khóa “template” template class SampleClass { // Viet cai dat }; Ví dụ Để hiểu rõ Class Template, xét ví dụ xây dựng lớp mảng cho nhiều kiểu liệu khác Array Bước 1: vào VS, tạo project dạng Console Application (Visual C++) Bước 2: thêm vào project file Array.h, viết khai báo cài đặt cho lớp Array sau: template class Array { private: T *m_pElement; int m_iLength; public: Array(int iLength) { if (iLength < 0) { cout = m_iLength) cout

Ngày đăng: 24/06/2016, 22:34

TỪ KHÓA LIÊN QUAN

w