C++ 模板
文章平均质量分 74
feng鸽
一点点的成长,最终会成为参天大树.
展开
-
编程风格
显然,下面几种风格都是可能的: void foo {const int &x}; void foo { const int& x}; void foo { int const &x}; void foo {int const& x}; 趋向于使用int const 而不是const int 首先针对问题,什么是恒定不变的,恒定不变的部分就是con原创 2016-11-19 23:48:35 · 198 阅读 · 0 评论 -
模板参数
template inline T const& max(T const& a,T const& b); max(4,7);//OK两个参数的类型都是Int max(4,4.2)//ERROR:第1个是int,而第二个是double 有3种方法处理这个错误: 1.对实参进行强制类型转换,使它们可以互相匹配 max(static_cast (4),4.2);//OK原创 2016-11-20 00:29:01 · 421 阅读 · 0 评论 -
重载函数模板
//求两个int值得最大值 inline int const& max(int const& a,int const& b) { return a } //求两个任意类型值中的最大者 template inline T const& max(T const& a,T const& b) { return a } //求3个任意类型值中的最大者 temp原创 2016-11-20 00:49:33 · 1775 阅读 · 0 评论 -
类模板
类也可以被一种或多种类型参数化。容器类就是一个具有这种特性的典型例子,通常被用于管理某种特定类型的元素。 只要使用类模板,你就可以实现容器类,而不需要确定容器中元素的类型。原创 2016-11-20 01:20:21 · 305 阅读 · 0 评论 -
类模板的特化
你可以用模板实参来特化类模板,和函数模板的重载类似,通过特化类模板,你可以优化基于某种特定类型的实现,或者克服某种特定类型在实例化类模板时所出现的不足,另外,如果要特化一个类模板,你还要特化该类模板的所有成员函数,虽然也可以只特化某个成员函数,但这个做法并没有特化整个类,也就没有特化整个模板。 为了特化一个类模板,你必须在起始处声明一个template templa原创 2016-11-20 20:05:19 · 918 阅读 · 0 评论 -
局部特化
类模板可以被局部特化,可以在特定环境下指定类模板的特定实现,并且要求某些模板参数仍然必须由用户来定义。 template class MyClass{ } 有以下几种局部特化: //局部特化,两个模板参数具有相同的类型 template class MyClass { }; //局部特化:第2个模板参数的类型是int template cl原创 2016-11-20 20:32:10 · 460 阅读 · 0 评论