目录:
- 函数模板
- 类模板
- 类模板与模板类
1.函数模板:函数体相同函数都可以用函数模板,根据实参类型替换虚拟类型。
int max(int a,int b)
{
return a>b?a:b;
}
char max(char a,char b)
{
return a>b?a:b;
}
#include <iostream>
using namespace std;
template <typename T>
T max(T a, T b)
{
return a > b ? a : b;
}
void main()
{
int iMax = max(3,5);
char cMax = max('w','c');
cout << "iMax=" << iMax << endl;
cout << "cMax=" << cMax << endl;
}
2.类模板:目的是建立一个通用的类。 一个类模板(类生成类)允许用户为类定义个一种模式,使得类中的某些数据成员、默认成员函数的参数,某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。
#include <iostream>
using namespace std;
template <typename T>//or
//template <class T>
class CMax {
public :
CMax(T a,T b)
{
m_a = a;
m_b = b;
}
T GetMax()
{
return m_a > m_b ? m_a : m_b;
}
private:
T m_a;
T m_b;
};
void main()
{
CMax<int> maxInt(3,5);
int iMax = maxInt.GetMax();
CMax<char> maxChar('w','d');
char chMax = maxChar.GetMax();
cout << "iMax:" << iMax << " " << "chMax:" << chMax << endl;
}
3.类模板与模板类
模板类是类模板实例化后的一个产物
类模板强调的是模板
template<typename T>
class A
{};
这个A就是是一个模板
模板类强调的是类
class A<int> 这个A<int> 就是模板类,类模板的实例