C++中的类模板
一、学习笔记
1.类模板的格式
(1)声明
template<typename T> /* 使用T表示某种类型,比如: */ class AAA { private: T obj; public: void test_func(T& t); ..... };
(2)定义
template<typename T>
void AAA<T>::test_func(T& t) ....
注意:函数模板和类模板都是typename, 函数模板中template<typename T1, typename T2> 指定两个变量也是可以的。
2.类模板的使用
(1)可以在实例化对象的时候再实例化类模板,eg:
AAA<int> a;
AAA<double> b;
(2)也可以事先实例化:
template AAA<int>;
再使用:
AAA<int> a;
3.类模板的重载(也称为定制,特例化)
(1)声明
template<> class AAA<int> { ...... public: void test(void); };
(2)定义
void AAA<int>::test(void) ...
定做的AAA<int>中的内容可以和模板AAA完全不一样!
4.函数参数若为引用,若想传入一个数值,函数参数应该定义为const引用
5.只有在使用类模板定义类的时候才会生成对应的代码
5.C++中的链表操作和容器里面大量使用到了类模板。
6.函数模板和类模板应该放在头文件中,因为其只是编译指令,编译器在编译的时候根据这些指令来生成代码,只有把它放在头文件中才能供更多的文件使用。
二、例子
#include <iostream> using namespace std; template<typename T> //模板类 class Person { T a; public: void set(const T &a); void get() { cout << "Person: a = " << this->a << endl; } }; template<typename T> void Person<T>::set(const T &a) { this->a = a; } template<> class Person<int> { //这个模板类的一个特例化 int a; public: void set(const int &a); void get() { cout << "Person<int>: a = " << this->a << endl; } }; void Person<int>::set(const int &a) { this->a = a; } int main() { Person<int> p1; p1.set(100); p1.get(); Person<double> p2; p2.set(3.14); p2.get(); return 0; } /* Person<int>: a = 100 优先调用特例化的模板类 Person: a = 3.14 */
posted on 2019-03-31 21:16 Hello-World3 阅读(262) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!