C++有什么缺点呢?
后期C++11等标准增加了不少鸡肋的语法(比如arry、forward_list等),让语言变得很臃肿,学习成本增加。而一些刚需的东西姗姗来迟,甚至还没有来。
下面让我们步入正题吧!将我们模板的相关知识补全
- 非类型模板参数
template<class T,size_t N>
//T为类型模板参数,N是非类型模板参数(N是一个常量)
- 模板参数都可以给缺省值
模板参数的缺省值跟函数参数给的缺省值是完全类似的。
全缺省、半缺省:必须是从右往左连续缺省 - 模板的特化,针对某些类型的特殊化处理
即根据膜版匹配原则,进行特殊处理
首先,是函数模板的特化:
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> /*偏特化(半特化) */
{
...
}
- 如何解决模板不支持分离编译的问题
解决方案一:显示实例化
template
void F(const int& x)
缺陷:用一个类型就得显示实例化一个
解决方案二:声明和定义直接在 .h文件中。(即不进行分离编译)
6. 模板的优缺点比较:
优点:
A:复用了代码,节省资源,更快的迭代开发,C++的标准膜版库(STL)因此诞生
B:增强了代码的灵活性
缺点:
A:模板会导致代码膨胀的问题,也会导致编译时间变长
B:出现模板编译错误时,错误信息非常零落,不易定位错误