C++ 类模板类型的推导方式

template <typename Type = short>
struct Test {
    Test() = default;
    Test(Type v) {}
};

int main(int argc, char *argv[]) {
    Test<int> t; //int
    Test t2(2.2); //double
    Test t3; //short
}

模板类型的确定方式:

1. t—在实例化时用<>指定(最常见的方式),优先级最高。

2. t2—用构造函数的方式推导,则必须有带参数的构造函数,也必须保证所有类型都能从构造函数的形参类型里推导出来,优先级次之。

3. t3—通过指定模板参数的默认类型来指定,优先级最低。(如果该类型用于构造函数,要知道实例化方式T t = T())

还有一种方式是通过已经确定的类型,来构造新的类型,例如std::set的定义:(std里经常用到这种方式)

  template<class Key, class Compare = less<Key>,
           class Allocator = allocator<Key>>
  class set {...};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值