#include<iostream>
using namespace std;
template <typename T = int>//默认类型为int
class Array
{
public:
Array(int n = 1);
~Array();
void Show();
T& operator[](int i);
private:
T* pData;
int size;
};
template <typename T>
Array<T>::Array(int n)
{
this->size= n;
this->pData= new T[this->size];
}
template <typename T>
T& Array<T>::operator[](int i)
{
return this->pData[i];
}
template <typename T>
void Array<T>::Show()
{
for (int i = 0; i < this->size; i++)
cout << this->pData[i];
cout << endl;
}
template <typename T>
Array<T>::~Array()
{
delete[] this->pData;
}
int main()
{
Array< > L1(10);//缺省的参数直接用int代替
for (int i = 0; i < 10; i++)
L1[i] = i;
for (int i = 0; i < 10; i++)
cout<<L1[i];
cout << endl;
Array<char> L2(10);
for (int i = 0; i < 10; i++)
L2[i] = 'A'+i;
L2.Show();
cout << endl;
return 0;
}
#include<iostream>
using namespace std;
#define TemplateArray(retType) template <typename T> retType Array <T>
template <typename T = int>//默认类型为int
class Array
{
public:
Array(int n = 1);
~Array();
void Show();
T& operator[](int i);
private:
T* pData;
int size;
};
TemplateArray()::Array(int n)
{
this->size= n;
this->pData= new T[this->size];
}
TemplateArray(T&)::operator[](int i)
{
return this->pData[i];
}
TemplateArray(void)::Show()
{
for (int i = 0; i < this->size; i++)
cout << this->pData[i];
cout << endl;
}
TemplateArray()::~Array()
{
delete[] this->pData;
}
int main()
{
Array< > L1(10);//缺省的参数直接用int代替
for (int i = 0; i < 10; i++)
L1[i] = i;
for (int i = 0; i < 10; i++)
cout<<L1[i];
cout << endl;
Array<char> L2(10);
for (int i = 0; i < 10; i++)
L2[i] = 'A'+i;
L2.Show();
cout << endl;
return 0;
}
#include<iostream>
using namespace std;
#define Template(retType,classname) template <typename T> retType classname <T>
//这样定义宏,就所有类通用了
template <typename T = int>//默认类型为int
class Array
{
public:
Array(int n = 1);
~Array();
void Show();
T& operator[](int i);
private:
T* pData;
int size;
};
Template(,Array)::Array(int n)
{
this->size= n;
this->pData= new T[this->size];
}
Template(T&,Array)::operator[](int i)
{
return this->pData[i];
}
Template(void,Array)::Show()
{
for (int i = 0; i < this->size; i++)
cout << this->pData[i];
cout << endl;
}
Template(,Array)::~Array()
{
delete[] this->pData;
}
int main()
{
Array< > L1(10);//缺省的参数直接用int代替
for (int i = 0; i < 10; i++)
L1[i] = i;
for (int i = 0; i < 10; i++)
cout<<L1[i];
cout << endl;
Array<char> L2(10);
for (int i = 0; i < 10; i++)
L2[i] = 'A'+i;
L2.Show();
cout << endl;
return 0;
}