c++ template

template<typename  T, typename  M>

//基本的模板函数和模板类
void testfunc(T a, M b)
{
    std::cout<<a<<b<<std::endl;
}

template<typename  T, typename  N>
class testclass
{
public:
    testclass(T a, N b){}
    ~testclass()= default;

};

int main()
{
    testfunc(3,4);
    testclass<int,float> atest(3,1.5);

}

 

//全特化,意思就是模板失去效果,类型全指定
template<typename  T, typename  M>void testfunc(T a, M b)
{
    std::cout<<a<<b<<std::endl;
}


template<>void testfunc(int a, float  b)
{
    std::cout<<a<<b<<std::endl;
}


template<typename  T, typename  N>class testclass
{
public:
    testclass(T a, N b){}
    ~testclass()= default;
};

template<>  class testclass<int ,float>
{
public:
    testclass(int a, float  b){std::cout<<a<<b<<"全特化构造"<<std::endl;};
    ~testclass() = default;;

};

int main()
{
    testfunc(3,1.2);
    testclass<int,float> a(1,3.5) ;
}

 

//偏特化,以上两种的杂交
template<typename  T, typename  M>void testfunc(T a, M b)
{
    std::cout<<a<<b<<std::endl;
}


template<typename  T>void testfunc(T a, float  b)
{
    std::cout<<a<<b<<std::endl;
}


template<typename  T, typename  N>class testclass
{
public:
    testclass(T a, N b){}
    ~testclass()= default;
};

template<typename  T>  class testclass<T ,float>
{
public:
    testclass(T a, float  b){std::cout<<a<<b<<"全特化构造"<<std::endl;};
    ~testclass() = default;;

};

int main()
{
    testfunc(3,1.2);
    testclass<int,float> a(1,3.5) ;
}

 

posted on 2022-10-26 21:43  对我不好  阅读(18)  评论(0编辑  收藏  举报

导航