再识模板(模板进阶)

C++有什么缺点呢?

后期C++11等标准增加了不少鸡肋的语法(比如arry、forward_list等),让语言变得很臃肿,学习成本增加。而一些刚需的东西姗姗来迟,甚至还没有来。

下面让我们步入正题吧!将我们模板的相关知识补全

  1. 非类型模板参数
template<class T,size_t N>
//T为类型模板参数,N是非类型模板参数(N是一个常量)
  1. 模板参数都可以给缺省值
    模板参数的缺省值跟函数参数给的缺省值是完全类似的。
    全缺省、半缺省:必须是从右往左连续缺省
  2. 模板的特化,针对某些类型的特殊化处理
    即根据膜版匹配原则,进行特殊处理
    首先,是函数模板的特化:
template<>
void Swap<vector<int>>(vector<int>& a,vector<int>& b)
{
	a.swap();
}

下来是类模板的特化:

template<>
class Date<double,double>  //全特化
{
	...
}
template<class T>
class Date<T,char>     /*偏特化(半特化)   */
{
	...
}

  1. 如何解决模板不支持分离编译的问题
    解决方案一:显示实例化
template
void F(const int& x)

缺陷:用一个类型就得显示实例化一个
解决方案二:声明和定义直接在 .h文件中。(即不进行分离编译)
6. 模板的优缺点比较:
优点:
A:复用了代码,节省资源,更快的迭代开发,C++的标准膜版库(STL)因此诞生
B:增强了代码的灵活性
缺点:
A:模板会导致代码膨胀的问题,也会导致编译时间变长
B:出现模板编译错误时,错误信息非常零落,不易定位错误

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值