[C++] 模板编程-05 类模板的静态成员

一 不依赖类模板型参数

  • 不依赖模板参数也就是任何采用该类模板生成的模板类都拥有一个通用的数据类型的成员而不受到模板参数的影响

1.1 原始类模板

  • 首先我们需要定义一个模板类,这个静态成员s_int不会受到模板参数的影响。
  • 值得注意的是,由于是静态成员我们必须初始化
template<typename T>
class A
{
public:
    static int s_int;
};
template<typename T>
int A<T>::s_int = 20; // 由于是静态成员必须初始化否则编译不会通过

1.1 特化版

  • 我们也可以对这种类模板进行特化,这样做的好处是,针对某个特化过的数据类型的值做设置。
  • 特化前也仍需要注意一定要定义原始的类模板

二 依赖模板类型参数

  • 对于与模板类型参数相关的静态成员变量,虽然我们也可以直接定义一个通用的类型实现,但是对于静态成员比那里

2.1 原始类模板

  • 当我们实现这样一个依赖模板参数的静态成员变量时,由于我们需要初始化这个成员变量,比如像下面我们初始化为int那么此时有很类型将不能使用这个类模板来创建类了,因为这个int值会限制很多类型不被允许创建。
template<typename T>
class A
{
public:
    static T s_int;
};
template<typename T>
T A<T>::s_int = 20;

2.2 特化版

  • 特化版其实也就是明确指定了某种类型的静态成员变量的值。
template<typename T>
class A
{
public:
    static T s_int;
};
template<>
QString A<QString>::s_int = "20";

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值