类型名 函数名(形式参数表)
{
..........
}
1 //函数模板 2 template<typename T> 3 //取二个数中最大的数并且返回最大数 4 T GetMax(T a, T b) 5 { 6 return a>b ? a:b; 7 }
1 float fMax = GetMax<float>(0.5f,1.25f); //显示类型调用 fMax = 1.25f
2 int nMax = GetMax(3,6); //自动类型推导调用,nMax = 6
和函数模板使用上差别不大,不同在于类模板是个类,当有多个类在功能上相同,仅仅是类中数据类型不同时就可以使用类模板,减少编写多个相同功能的类
class 类名
{
..........
}
1 template<class TT> 2 class CMax 3 { 4 public: 5 CMax(){} 6 CMax(TT a, TT b) : m_a(a), m_b(b){} 7 TT GetMax() 8 { 9 return m_a>m_b ? m_a:m_b; 10 } 11 void SetValue(TT a, TT b); 12 private: 13 TT m_a; 14 TT m_b; 15 }; 16 //注意:类外定义成员函数还需要声明一次类模板 17 template<class TT> 18 void CMax<TT>::SetValue(TT a, TT b) 19 { 20 m_a = a; 21 m_b = b; 22 }
1 //实例化个CMax类模板对象,显示指明类中的虚拟类型为int 2 //Cmax模板类中所有TT类型都会自动转换为int型 3 CMax<int> maxA(3,6); 4 int nMaxA = maxA.GetMax(); //nMaxA = 6 5 6 CMax<float> maxB(1.25f,1.2f); 7 float fMaxB = maxB.GetMax(); //fMaxB = 1.25f 8 CMax<char> maxC(‘a‘,‘g‘); 9 char cMaxB = maxC.GetMax(); //cMaxB = ‘g‘ 10 CMax<int> maxD; 11 maxD.SetValue(10,5); 12 int nMaxdD = maxD.GetMax(); //nMaxD = 10 13 14 return 0;
原文:https://www.cnblogs.com/fzxiaoyi/p/12091733.html