用C++的模板類定義一個萬能陣列,陣列元素型別任意,陣列大小也任意
阿新 • • 發佈:2019-02-07
/*用模版類實現一個萬能陣列,陣列型別可以任意給定,陣列大小可以任意給定*/ /* 函式呼叫 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() 獲取變數的型別名