C++模板实例掌握

时间:2023-03-09 20:25:04
C++模板实例掌握

前段时间重新学习C++,主要看C++编程思想和C++设计新思维。对模版的使用有了更进一层的了解,特总结如下:

下面列出了模版的常用情况:

C++模板实例掌握 << '\n';
C++模板实例掌握}
C++模板实例掌握
C++模板实例掌握
C++模板实例掌握

//参考:http://www.cnblogs.com/dayouluo/archive/2005/05/14/155092.html

特别注意:类,全局函数,类的成员函数都可以特化,但是只有类可以半特化,全局函数和类的成员函数不可以半特化。

C++模板实例掌握//-------------------------------------------
C++模板实例掌握//1 类的特化和类成员函数的特化
C++模板实例掌握template<typename T>
C++模板实例掌握class Widget1
C++模板实例掌握{
C++模板实例掌握public:
C++模板实例掌握    void Fun1()
C++模板实例掌握    {
C++模板实例掌握        //generic implementation
C++模板实例掌握    }
C++模板实例掌握   
C++模板实例掌握};
C++模板实例掌握
C++模板实例掌握template<>
C++模板实例掌握class Widget1<int>
C++模板实例掌握{
C++模板实例掌握public:
C++模板实例掌握    void Fun1()
C++模板实例掌握    {
C++模板实例掌握    }
C++模板实例掌握};
C++模板实例掌握template<> 
C++模板实例掌握void Widget1<char>::Fun1()
C++模板实例掌握{
C++模板实例掌握    //specialization
C++模板实例掌握}
C++模板实例掌握
C++模板实例掌握void main()
C++模板实例掌握{
C++模板实例掌握
C++模板实例掌握  Widget1<char> w;
C++模板实例掌握  w.Fun1();
C++模板实例掌握  Widget1<int> w2;
C++模板实例掌握  w2.Fun1();
C++模板实例掌握 
C++模板实例掌握}
C++模板实例掌握//-------------------------------------------
C++模板实例掌握//2 全局函数的特化和重载
C++模板实例掌握template<typename T1, typename T2>
C++模板实例掌握T1 Fun2(T2)
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握
C++模板实例掌握//下面2个应该是属于重载
C++模板实例掌握template<typename T2>
C++模板实例掌握char Fun2(T2)
C++模板实例掌握{
C++模板实例掌握    char c;
C++模板实例掌握    return c;
C++模板实例掌握}
C++模板实例掌握
C++模板实例掌握template<typename T1>
C++模板实例掌握T1 Fun2(char)
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握
C++模板实例掌握//全局函数的特化
C++模板实例掌握template<>
C++模板实例掌握char Fun2<char,int>(int)
C++模板实例掌握{
C++模板实例掌握    char c;
C++模板实例掌握    return c;
C++模板实例掌握}
C++模板实例掌握int main()
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握//-------------------------------------------
C++模板实例掌握//3 全局函数不能半特化,以下编译失败
C++模板实例掌握template <typename T1,typename T2> //原型1
C++模板实例掌握void Test(T1,T2)
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握
C++模板实例掌握template <typename T1>
C++模板实例掌握void Test<T1,T1>(T1,T1)
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握
C++模板实例掌握template<typename T1, typename T2> //原型2
C++模板实例掌握T1 Fun2(T2)
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握//
C++模板实例掌握template<typename T2>
C++模板实例掌握int Fun2<int,T2>(T2)
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握template<typename T1>
C++模板实例掌握T1 Fun2<T1,int>(int)
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握template<typename T>
C++模板实例掌握T Fun2<T,T>(T)
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握int main()
C++模板实例掌握{
C++模板实例掌握}
C++模板实例掌握
C++模板实例掌握
C++模板实例掌握////-------------------------------------------
C++模板实例掌握////4 类可以特化和半特化,但是特的成员函数像全局函数一样,只能特化,不能半特化,
C++模板实例掌握template<typename T1, typename T2> struct Widget2
C++模板实例掌握{
C++模板实例掌握  void Fun2()
C++模板实例掌握  {
C++模板实例掌握      //generic implementation
C++模板实例掌握  }
C++模板实例掌握};
C++模板实例掌握
C++模板实例掌握template<typename T2> 
C++模板实例掌握struct Widget2<char,T2>
C++模板实例掌握{
C++模板实例掌握    void Fun2()
C++模板实例掌握    {
C++模板实例掌握    }
C++模板实例掌握};
C++模板实例掌握
C++模板实例掌握template<typename T2>
C++模板实例掌握struct widget2
C++模板实例掌握{
C++模板实例掌握    void Fun2()
C++模板实例掌握    {
C++模板实例掌握        // class partial specialization
C++模板实例掌握    }
C++模板实例掌握};
C++模板实例掌握
C++模板实例掌握
C++模板实例掌握
C++模板实例掌握//the class member funtion can not be partial specialization
C++模板实例掌握//以下的成员函数半特化,编译失败
C++模板实例掌握template<typename T2>
C++模板实例掌握void Widget2<char, T2>::Fun2()
C++模板实例掌握{
C++模板实例掌握    //class member function partial specialization
C++模板实例掌握}
C++模板实例掌握int main()
C++模板实例掌握{
C++模板实例掌握}

参考:C++编程思想2

http://www.cnblogs.com/feisky/archive/2009/11/04/1596203.html