实现C++模板类需先用template定义通用结构,如MyArray类封装动态数组,支持不同类型;通过指定具体类型实例化,如MyArray;可扩展为多参数模板,如Pair并设默认类型;成员函数若在类外定义,须重新声明模板;模板代码通常置于头文件以供编译时实例化。

实现一个C++模板类并不复杂,关键在于理解模板的语法和用途。模板类允许你编写与数据类型无关的通用类,适用于多种类型而无需重复代码。下面一步步说明如何定义和使用一个模板类。
1. 基本模板类定义
使用 template 关键字声明模板,后跟类型参数(通常用 T 表示)。例如,实现一个简单的动态数组模板类:
templateclass MyArray { private: T* data; int size; public: // 构造函数 MyArray(int s) : size(s) { data = new T[size]; }
// 析构函数 ~MyArray() { delete[] data; } // 获取元素 T& get(int index) { return data[index]; } // 设置元素 void set(int index, const T& value) { data[index] = value; } // 获取大小 int getSize() const { return size; }};
2. 使用模板类
实例化模板类时指定具体类型,编译器会自动生成对应类型的类代码:
立即学习“C++免费学习笔记(深入)”;
int main() {
MyArray intArray(5);
MyArray doubleArray(3);
MyArray stringArray(2);
intArray.set(0, 10);
doubleArray.set(1, 3.14);
stringArray.set(0, "Hello");
return 0;
}
I-Shop购物系统
部分功能简介:商品收藏夹功能热门商品最新商品分级价格功能自选风格打印结算页面内部短信箱商品评论增加上一商品,下一商品功能增强商家提示功能友情链接用户在线统计用户来访统计用户来访信息用户积分功能广告设置用户组分类邮件系统后台实现更新用户数据系统图片设置模板管理CSS风格管理申诉内容过滤功能用户注册过滤特征字符IP库管理及来访限制及管理压缩,恢复,备份数据库功能上传文件管理商品类别管理商品添加/修改/
下载
3. 多模板参数与默认类型
模板类可以支持多个类型参数,也可以设置默认类型:
templateclass Pair { private: T first; U second; public: Pair(const T& a, const U& b) : first(a), second(b) {}
T getFirst() const { return first; } U getSecond() const { return second; }};
// 使用示例 Pair
p1(1, 2.5); Pair p2(10, "default"); // 使用默认类型
4. 成员函数外部定义
如果将成员函数定义在类外,必须再次声明模板:
templateT& MyArray ::get(int index) { if (index < 0 || index >= size) { throw std::out_of_range("Index out of range"); } return data[index]; }
基本上就这些。只要掌握 template 语法、类型参数使用和函数定义规则,就能灵活创建通用类。注意模板代码通常写在头文件中,因为编译器需要在编译时看到完整定义。









