
01
类模板

02
类模板示例

那今天我们就来聊聊类模板。
首先来个简单的例子,看看类模板的基本语法:
1#include<cstdio>
2#include<iostream>
3using namespace std;
4
5//类模板
6template<typename Ty>
7class Calc
8{
9public:
10
11 Ty Add(Ty param1 ,Ty param2)
12 {
13 return(param1 + param2);
14 }
15
16 Ty Sub(Ty param1 ,Ty param2);
17};
18
19template<typename Ty> //须声明
20Ty Calc<Ty>::Sub(Ty param1 ,Ty param2) //函数外定义,需要类后面指定模板参数
21
22{
23
24 return(param1 - param2);
25}
26
27int main(void)
28{
29 Calc<int> calc1; //定义对象需指定模板参数类型
30
31
32 cout<<"templateint Add: "<<calc1.Add(10,5)<<endl;
33 cout<<"templateint Sub: "<<calc1.Sub(10,5)<<endl;
34
35 Calc<float> calc2; //定义对象需指定模板参数类型
36
37
38 cout<<"templatefloat Add: "<<calc2.Add(10.2,5.1)<<endl;
39 cout<<"templatefloat Sub: "<<calc2.Sub(10.2,5.1)<<endl;
40
41 return 1;
42}

03
类模板的特化

1#include<cstdio>
2#include<iostream>
3using namespace std;
4
5//类模板
6template<typename Ty>
7class Calc
8{
9public:
10
11 Ty Add(Ty param1 ,Ty param2)
12 {
13 return(param1 + param2);
14 }
15
16 Ty Sub(Ty param1 ,Ty param2);
17};
18
19template<typename Ty> //须声明
20Ty Calc<Ty>::Sub(Ty param1 ,Ty param2) //函数外定义,需要类后面指定模板参数
21
22{
23
24 return(param1 - param2);
25}
26
27//类模板的特化
28template<>
29class Calc<float>
30{
31public:
32
33 float Add(float param1 ,float param2)
34 {
35 cout<<"special Add template"<<endl;
36 return(param1 + param2);
37 }
38
39 float Sub(float param1 ,float param2);
40};
41
42float Calc<float>::Sub(float param1 ,float param2)
43{
44 cout<<"special Sub template"<<endl;
45 return(param1 - param2);
46}
47
48int main(void)
49{
50 Calc<int> calc1; //定义对象需指定模板参数类型
51
52 cout<<"template int Add: "<<calc1.Add(10,5)<<endl;
53 cout<<"template int Sub: "<<calc1.Sub(10,5)<<endl;
54
55 Calc<float> calc2; //优先会选择匹配特化模板
56
57 cout<<"template float Add: "<<calc2.Add(10.2,5.1)<<endl;
58 cout<<"template float Sub: "<<calc2.Sub(10.2,5.1)<<endl;
59
60 return 1;
61}

最 后
这里小哥就介绍了一下C++中类模板及其特化,希望本文能够对你有帮助,该系列还会持续更新,大家可以持续关注~
查看更多,可以在公众号内回复"1024"即可获取~
推荐好文 点击蓝色字体即可跳转
☞ 专辑|手撕C语言
☞ 专辑|经验分享
文章转载自嵌入式情报局,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





