C/C++教程

c++中的泛型1

本文主要是介绍c++中的泛型1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 泛型概念:将数据类型作为一个参数,传入到函数、类或接口中,即同一种数据操作,可面向不同的数据类型,因此我们不需要为不同的数据类型写相同的数据操作代码;

 

2. 泛型编程的优点:

(1)代码复用

(2)避免使用函数重载(相似的操作):函数重载做的是相似的操作,模板是用来做相同的操作;

(3)一次写好,多次使用

 

3. 函数泛型

1 template<typename T>
2 T myMax(T x, T y)
3 {
4     return (x>y)?x:y;
5 }
6     
7 
8 myMax<int>(2,3); 

 

4. 类泛型

 1 template <typename T>
 2 
 3 class Array
 4 {
 5     T* ptr;
 6     int size;
 7 
 8 public:
 9     Array(T arr[],int s);
10     void print();
11 }
12 
13 template <typename T>
14 Array<T>::Array(T arr[],int s)
15 {
16     //pass
17 }  
18 
19 
20 template <typename T>
21 void Array<T>::print()
22 {
23     for(int i=0;i<size;i++)
24     {
25         cout<<(*ptr+i)<<endl;
26      }
27 
28 
29 int arr[]={1,2,3};
30 Array<int> a(arr,5);
31 a.print()

 

5. 多类型泛型:即可以传入多个数据类型到模板参数中,模板参数也可以有默认类型;

1 template<typename T, typename U>
2 class A
3 {
4     T x;
5     U y;
6 }
7 
8 
9 A<int, double> a;

 

6. 可以在template中传入非类型参数,但必须是常量(编译时必须知道值);

 1 template <typename T, int max>
 2 int arrMin(T arr[], int n)
 3 {
 4       //pass
 5 }
 6 
 7 
 8 
 9 int arr1[]={1,2,3};
10 arrMin<int, 100>(arr1,10);

 

7. 可以指定某个数据类型做其他操作:即template specialization;

这篇关于c++中的泛型1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!