模板函数示例代码
#include <iostream>
using namespace std;
//模板函数,不允许隐式类型转化
template <typename T, typename T1> void swapTemplate(T &a, T1 &b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int main(int argc, const char *argv[])
{
int a = 20, b = 20;
swapTemplate<int, int>(a,b);
cout << a << " " << b << endl;
return 0;
}
模板类
#include <iostream>
using namespace std;
template <typename T>
class SeqList
{
public:
SeqList(int size);
bool addData(T data);
void showList();
private:
T *buf;
int size;
int index;
};
template <typename T>
SeqList<T>::SeqList(int size)
{
this->buf = new T(size);
this->size = size;
this->index = 0;
}
template <typename T>
bool SeqList<T>::addData(T data)
{
if (index >= size){
cout << "SeqList Full" << endl;
return false;
}
buf[index++] = data;
return true;
}
template <typename T>
void SeqList<T>::showList()
{
for (int i = 0;i < index; ++i){
cout << buf[i] << " ";
}
cout << endl;
}
int main(int argc, const char *argv[])
{
SeqList<int> list(5);
list.addData(10);
list.addData(20);
list.addData(30);
list.addData(40);
list.addData(50);
list.showList();
return 0;
}
带多种参数类型的模板类
#include <iostream>
using namespace std;
template <typename T, int size>
class SeqList
{
public:
SeqList();
bool addData(T data);
void showList();
private:
T *buf;
int index;
};
template <typename T, int size>
SeqList<T,size>::SeqList()
{
this->buf = new T(size);
this->index = 0;
}
template <typename T,int size>
bool SeqList<T, size>::addData(T data)
{
if (index >= size){
cout << "SeqList Full" << endl;
return false;
}
buf[index++] = data;
return true;
}
template <typename T,int size>
void SeqList<T, size>::showList()
{
for (int i = 0;i < index; ++i){
cout << buf[i] << " ";
}
cout << endl;
}
int main(int argc, const char *argv[])
{
SeqList<int,5> list;
list.addData(10);
list.addData(20);
list.addData(30);
list.addData(40);
list.addData(50);
list.showList();
return 0;
}