1. 程式人生 > >用C++的模板類定義一個萬能陣列,陣列元素型別任意,陣列大小也任意

用C++的模板類定義一個萬能陣列,陣列元素型別任意,陣列大小也任意

/*用模版類實現一個萬能陣列,陣列型別可以任意給定,陣列大小可以任意給定*/
/*
函式呼叫    typeid(變數).name()    獲取變數的型別名
*/
#include <iostream>
using namespace std;

//模版類定義,一個是虛擬型別T,用來給定陣列元素的型別,一個是整型值size,用來給定陣列的大小,即元素個數
//此類是一個萬能陣列,陣列型別可以任意給定,陣列大小可任意給定
//模板類不僅可以傳遞型別T,也可以傳遞數值size
template <class T,int size>
class Array
{ 
  public:
    Array()
	{
	  int i;
	  cout<<"請輸如"<<size<<"個"<<typeid(T).name()<<"值,對陣列成員賦值:"<<endl;
	  for(i=0;i<size;i++)   //對陣列元素值進行輸入
		  cin>>array[i];	
	}
	void display()
	{
	  int i;
	  cout<<"輸出"<<size<<"陣列成員值:"<<endl;
	  for(i=0;i<size;i++)   //對陣列元素值進行輸出
		  cout<<array[i]<<" ";	
	  cout<<endl;
	}
  private:
  T  array[size];  
};


int main()
{
   Array<int,5>  array_int; //給出模板的引數化值,使其生成具體類,然後定義類物件
                         //當前陣列類中陣列元素型別為int,陣列大小為5
   array_int.display();
   Array<char,3>  array_char; //給出模板的引數化值,使其生成具體類,然後定義類物件
                         //當前陣列類中陣列元素型別為char,陣列大小為3
   array_char.display();
   Array<float,4>  array_float; //給出模板的引數化值,使其生成具體類,然後定義類物件
                         //當前陣列類中陣列元素型別為int,陣列大小為5
   array_float.display();
   return 0;
}


補充函式
函式呼叫    typeid(變數).name()    獲取變數的型別名

上例對應的UML類圖如下所示。


補充函式
函式呼叫    typeid(變數).name()    獲取變數的型別名