Template Trong C++ - Học Lập Trình C++ Online - VietTuts
Có thể bạn quan tâm
C++ Cơ Bản
Ngôn ngữ lập trình C++ là gì? Lịch sử của C++ Các tính năng của C++ Cài đặt môi trường lập trình C++ Chương trình C++ đầu tiên Biến trong C++ Các kiểu dữ liệu trong C++ Ép kiểu trong C++ Từ khóa trong C++ Các toán tử trong C++ Comment trong C++ Các hằng số trong C++ count, cin và endl trong C++ Ký tự đặc biệt trong C++ Namespace trong C++ Template trong C++ Modifier trong C/C++Câu Lệnh Điều Khiển C++
Mệnh đề if-else Mệnh đề switch Vòng lặp for Vòng lặp while Vòng lặp do-while Lệnh Break Lệnh Continue Lệnh GotoC++ Function
Hàm trong C++ Hàm do người dùng định nghĩa Các kiểu hàm trong C++ Đệ quy trong C++ Call by value Call by referenceC++ Array
Mảng (array) trong C++ Mảng 2 chiều trong C++ Truyền mảng vào hàmC++ Poiter
Con trỏ trong C++ Con trỏ Null trong C++ Con trỏ số học trong C++ Con trỏ và mảng trong C++ Mảng con trỏ trong C++ Con trỏ tới con trỏ trong C++ Truyền con trỏ tới hàm trong C++ Trả về con trỏ từ hàm trong C++C++ Lớp Object
Khái niệm lập trình hướng đối tượng trong C++ Lớp và đối tượng trong C++ Constructor trong C++ Destructor trong C++ this trong C++ static trong C++ struct trong C++ Enumeration trong C++ Hàm Friend trong C++ Hàm Math trong C++ Tính kế thừa trong C++ Tính đa hình trong C++ Tính trừu tượng trong C++ Tính đóng gói trong C++ Interface trong C++Nạp Chồng Toán Tử
Nạp chồng toán tử và Nạp chồng hàm trong C++ Nạp chồng toán tử một ngôi trong C++ Nạp chồng toán tử nhị phân trong C++ Nạp chồng toán tử quan hệ trong C++ Nạp chồng toán tử Input/Output trong C++ Nạp chồng toán tử ++ và -- trong C++ Nạp chồng toán tử gán trong C++ Nạp chồng toán tử gọi hàm () trong C++ Nạp chồng toán tử subscript [] trong C++ Nạp chồng toán tử truy cập thành viên lớp (->) trong C++Lập Trình C++
Xử lý ngoại lệ trong C++ Đa luồng trong C++ Bài Tập C++ Có Lời Giải Namespace trong C++ Mệnh đề if-else trong C++Template trong C++ là nền tảng của lập trình tổng quát (generic programming), tức là viết code theo các mà độc lập với bất kỳ kiểu cụ thể nào.
Một Template là một blueprint hoặc là phương thức để tạo một lớp hoặc một hàm tổng quát. Các Library Container như Iterator và các thuật toán là các ví dụ của lập trình tổng quát và đã được phát triển bởi sử dụng khái niệm Template.
Mỗi container có một định nghĩa đơn, ví dụ vector, nhưng chúng ta có thể định nghĩa nhiều loạt vector khác nhau, ví dụ: vector <int> hoặc vector <string>.
Template là từ khóa trong C++, chúng ta có thể hiểu rằng là nó một kiểu dữ liệu trừu tượng, đặc trưng cho các kiểu dữ liệu cơ bản. Template là từ khóa báo cho trình biên dịch rằng đoạn mã sau đây định nghĩa cho nhiều kiểu dữ liệu và mã nguồn của nó sẽ được biên dịch sinh ra tương ứng cho từng kiểu dữ liệu trong quá trình biên dịch. Có hai kiểu Template trong C++:
- Function Template: là một khuôn mẫu hàm, cho phép định nghĩa các hàm tổng quát thao tác cho nhiều kiểu dữ liệu.
- Class template: là một khuôn mẫu lớp, cho phép định nghĩa các lớp tổng quát cho nhiều kiểu dữ liệu.
Nội dung chính
- Function Template trong C++
- Class Template trong C++
Function Template trong C++
Cú pháp Function Template trong C++:
template <class kieu_du_lieu> kieu_tham_chieu ten_ham(danh_sach_tham_so) { // code }Trong đó, kieu_du_lieu là một tên một kiểu dữ liệu được sử dụng bởi hàm. Tên này có thể được sử dụng bên trong định nghĩa hàm.
Ví dụ: Function Template trong C++ trả về giá trị lớn nhất của hai giá trị:
#include <iostream> #include <string> using namespace std; template <typename T> inline T const& Max (T const& a, T const& b) { return a < b ? b:a; } int main () { int i = 39; int j = 20; cout << "Max(i, j): " << Max(i, j) << endl; double f1 = 13.5; double f2 = 20.7; cout << "Max(f1, f2): " << Max(f1, f2) << endl; string s1 = "Hello"; string s2 = "C++"; cout << "Max(s1, s2): " << Max(s1, s2) << endl; return 0; }Kết quả:
Max(i, j): 39 Max(f1, f2): 20.7 Max(s1, s2): HelloClass Template trong C++
Giống như khi chúng ta có thể định nghĩa Function Template, chúng ta cũng có thể định nghĩa Class Template trong C++. Cú pháp chung của định nghĩa Class Template trong C++ là:
template <class kieu_du_lieu> class ten_lop { . . . }Trong đó, kieu_du_lieu là tên kiểu, mà sẽ được xác định khi một lớp được khai báo. Bạn có thể định nghĩa nhiều hơn một kiểu dữ liệu tổng quát (generic) bởi sử dụng một danh sách phân biệt nhau bởi dấu phảy.
Ví dụ: định nghĩa lớp Stack và triển khai các phương thức tổng quát để push và pop các phần tử từ Stack đó. (Stack: ngăn xếp, push: thêm nút mới vào đỉnh stack, pop: thao tác lấy 1 phần tử từ đỉnh stack).
#include <iostream> #include <vector> #include <cstdlib> #include <string> #include <stdexcept> using namespace std; template <class T> class Stack { private: vector<T> elems; // cac phan tu public: void push(T const&); // push phan tu vao stack void pop(); // phan tu pop T top() const; // tra ve phan tu tren cung bool empty() const { // tra ve true neu trong return elems.empty(); } }; template <class T> void Stack<T>::push (T const& elem) { // append copy of passed element elems.push_back(elem); } template <class T> void Stack<T>::pop () { if (elems.empty()) { throw out_of_range("Stack<>::pop(): empty stack"); } // xoa phan tu cuoi cung elems.pop_back(); } template <class T> T Stack<T>::top () const { if (elems.empty()) { throw out_of_range("Stack<>::top(): empty stack"); } // tra ve ban copy cua phan tu cuoi cung return elems.back(); } int main() { try { Stack<int> intStack; Stack<string> stringStack; // push int vao stack intStack.push(7); cout << intStack.top() <<endl; // push string vao stack stringStack.push("hello"); cout << stringStack.top() << std::endl; stringStack.pop(); stringStack.pop(); } catch (exception const& ex) { cerr << "Exception: " << ex.what() <<endl; return -1; } }Kết quả:
7 hello Exception: Stack::pop(): empty stack Namespace trong C++ Mệnh đề if-else trong C++Recent Updates
Đa luồng trong C++Xử lý ngoại lệ trong C++Nạp chồng toán tử truy cập thành viên lớp (->) trong C++Nạp chồng toán tử subscript [] trong C++Nạp chồng toán tử gọi hàm () trong C++Nạp chồng toán tử gán trong C++Nạp chồng toán tử ++ và -- trong C++Nạp chồng toán tử Input/Output trong C++Nạp chồng toán tử quan hệ trong C++Nạp chồng toán tử nhị phân trong C++Nạp chồng toán tử một ngôi trong C++Nạp chồng toán tử và Nạp chồng hàm trong C++Sắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?VietTuts on facebook
Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học
Học Java | Hibernate | Spring Học Excel | Excel VBA Học Servlet | JSP | Struts2 Học C | C++ | C# Học Python Học SQL
Bài Tập Có Lời Giải
Bài tập Java Bài tập C Bài tập C++ Bài tập C# Bài tập Python Ví dụ Excel VBA
Câu Hỏi Phỏng Vấn
201 câu hỏi phỏng vấn java 25 câu hỏi phỏng vấn servlet 75 câu hỏi phỏng vấn jsp 52 câu hỏi phỏng vấn Hibernate 70 câu hỏi phỏng vấn Spring 57 câu hỏi phỏng vấn SQL
Từ khóa » Hàm Template Trong C
-
Template Trong C++ — Modern C++
-
Cách Sử Dụng Template Trong C++ - Lập Trình Không Khó
-
Sử Dụng Template Trong C++ Thế Nào (Phần 1) - CodeLearn
-
Chi Tiết Bài Học Templates Trong C++ - Vimentor
-
[Tự Học C++] Ví Dụ Về Hàm Template Trong C++
-
[Tự Học C++] Template Classes Trong C++ »
-
Khuôn Mẫu Hàm Trong C++ (Function Templates) | How Kteam
-
Template C++ Là Gì - Sử Dụng Template Trong C++ Thế Nào (Phần 1)
-
Template Trong C++ - Hoclaptrinh
-
Template Trong C++ | 101 Bài Hướng Dẫn C++ Hay Nhất
-
Lập Trình C++ - Xây Dựng Template Trong C++ - Phan Xuân Chánh
-
Template - Viblo
-
Template Trong C++ - Techacademy
-
C++ Templates: Tìm Hiểu Về Template