码迷,mamicode.com
首页 > 其他好文 > 详细

类模板

时间:2016-07-14 21:49:06      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

 

9.3类模板

类模板用于实现类所需数据的类型参数化。

类模板在表示如数组、表、图等数据结构显得特别重要,这些数据结构的表示和算法不受所包含的元素类型的影响。

 

类模板声明的一般方法如下:

template<类模板参数>class 类名{//类体};

 

用类模板定义对象的一般格式如下:

类名<模板实例化参数类别>对象名(构造函数实参列表);

 

//类模板实际上对于使用不同的数据类型,但是操作方法一样的类的一种抽象

//类模板实现通用

 

 1 #include <iostream>
 2 
 3 //类模板实际上对于使用不同的数据类型,但是操作方法一样的类的一种抽象
 4 //类模板实现通用
 5 template <class T>
 6 class com
 7 {
 8 public:
 9     T a;
10     T b;
11     T add()
12     {
13         std::cout << typeid(T).name() << std::endl;
14         return a + b;
15     }
16 };
17 
18 void main()
19 {
20     com<int>comx;
21 
22     comx.a = 19;
23     comx.b = 29;
24 
25     std::cout << comx.add() << std::endl;
26 
27     system("pause");
28 }

 

//定义两种数据类型的类模板

//STL数据结构,算法,适用任何类型

 

 1 #include <iostream>
 2 #include <string>
 3 
 4 //定义两种数据类型的类模板
 5 //STL数据结构,算法,适用任何类型
 6 template<class T1, class T2>
 7 class myclass
 8 {
 9 public:
10     T1 t11;
11     T2 t22;
12     myclass(T1 t111, T2 t222) :t11(t111), t22(t222)
13     {
14 
15     }
16     void print()
17     {
18         std::cout << t11 << " " << t22 << std::endl;
19     }
20 };
21 
22 void main()
23 {
24     myclass<int, double>my1(10, 20.8);
25     my1.print();
26 
27     myclass<double, std::string>my2(20.8, "123456abc");
28     my2.print();
29 
30     system("pause");
31 }

 

//类模板可以有一个默认的值,C++11

 

 1 #include "myArray.h"
 2 
 3 template<class T = int>//类模板可以有一个默认的值,C++11
 4 myArray<T>::myArray()
 5 {
 6     std::cout << "构造" << typeid(T).name() << std::endl;
 7 }
 8 
 9 template<class T = int>//类模板可以有一个默认的值,C++11
10 myArray<T>::~myArray()
11 {
12     std::cout << "销毁" << typeid(T).name() << std::endl;
13 }

 

类模板

标签:

原文地址:http://www.cnblogs.com/denggelin/p/5671693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!