浅谈C++模版特化问题

本文介绍了C++中的模板特化,包括类模板和函数模板的全特化与偏特化。通过示例,解释了模板匹配优先级:全特化 > 偏特化 > 普通模板。讨论了类模板的偏特化如何提高实例化匹配度,以及函数模板虽不允许偏特化,但可以通过重载实现类似效果。最后,展示了不同模板调用方式及其输出结果。
摘要由CSDN通过智能技术生成

C++中有类模版和函数模版2种模版方式,模版特化也分为全特化和偏特化2种。

首先来看下类模版

#include <iostream>

//普通模版
template <typename T1,typename T2>
class Base{
private:
    T1 n1;
    T2 n2;
public:
    Base(T1 n1_t,T2 n2_t):n1(n1_t),n2(n2_t){}
    void show()const{
        std::cout << "#1:" << n1 << "," << n2 << std::endl;
    }
};

//模版偏特化
template <typename T2>
class Base<char,T2>{
private:
    char n1;
    T2 n2;
public:
    Base(char n1_t,T2 n2_t):n1(n1_t),n2(n2_t){}
    void show()const{
        std::cout << "#2:" << n1 << "," << n2 << std::endl;
    }
};

//模版全特化
template <>
class Base<double,double>{
private:
    double n1;
    double n2;
public:
    Base(double n1_t,double n2_t):n1(n1_t),n2(n2_t){}
    void show()const{
        std::cout << "#3:" << n1 << "," << n2 << std
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值