类模板

发布于 2021-09-04 08:55
类模板
类模板示例
那今天我们就来聊聊类模板。
首先来个简单的例子,看看类模板的基本语法:
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}
类模板的特化
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}
☞ 专辑|Linux应用程序编程大全
☞ 专辑|学点网络知识
☞ 专辑|手撕C语言
☞ 专辑|手撕C++语言
☞ 专辑|经验分享
☞ 专辑|从单片机到Linux
☞ 专辑|电能控制技术
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材