一、模板参数列表模板参数列表是一个逗号分隔的一个或者多个模板参数的列表;template如上所示,typename T和typename U为模板参数;二、模板参数模板参数分为模板类型参数与非类型模板参数两种;1)模板类型参数:模板类型参数可以看做类型说明符,可以向类类型说明符和内置类型一样使用;2...
分类:
其他好文 时间:
2015-06-06 00:27:47
阅读次数:
189
一、函数模板模板定义以关键字template开始,后跟一个模板参数列表,在模板定义中,模板参数列表不能为空。模板类型参数:类型参数前必须使用class或typename关键字。非类型模板参数:表示一个值而不是一个类型数组引用形参://&arr两端的括号必不可少void print(int(&arr)...
分类:
其他好文 时间:
2015-04-10 11:11:27
阅读次数:
159
1. 非类型模板形参是指模板的形参是基本类型比如int,如template array_init(T (¶m[N))2. 模板特化是指为特定的类型重现实现,针对的是模板不能满足所有情况的一种补充3. 模板的traits就是具有这种功能的模板类:从模板形参中拿到需要的type,比如说itera...
分类:
其他好文 时间:
2015-03-10 18:43:31
阅读次数:
140
本文做如下简化:
1,假定所有维元素都是5。
2,不考虑const的[]。
3,由于只是熟悉原理,不考虑各种异常情况。
问题一,请实现一个一维整形数组,只需重载[]。
问题二,请实现一个二维整形数组,只需重载[]。
源码如下:
class CIntArray1
{
public:
int& operator[](int index)
{...
分类:
编程语言 时间:
2015-01-21 13:30:47
阅读次数:
230
对于函数模板与类模板,模板参数并不局限于类型,普通值也可以作为模板参数。在基于类型参数的模板中,你定义了一些具体的细节来加以确定代码,直到代码被调用时这些细节才被真正的确定。但是在这里,我们面对的是这些细节是值,而不是类型,当要使用基于值的模板时,必须显式地指定这些值,才能够对模板进行实例化。非类型...
分类:
其他好文 时间:
2014-10-29 18:27:01
阅读次数:
151
在模板中,除了定义类型参数,我们还可以定义非类型参数。例如:temlateint foo(const char (&p1)[N], const char (&p2)[M]) { return strcmp(p1,p2);}但是需要注意的是:编译器会在一个字符串字面常量的末尾插入一个空字符作为终...
分类:
其他好文 时间:
2014-10-20 16:58:08
阅读次数:
157
经验:Templates 生成多个 classes 和多个函数,所以任何 template 代码都不该与某个造成膨胀的 template 参数产生相依关系
因非类型模板参数(non-type template parameters) 而造成的代码膨胀,往往可消除,做法是以函数参数或 class 成员变量替换 template 参数
示例:
template //size_t 是非类型模板参数
class SquareMatrix{
public:
//...
分类:
编程语言 时间:
2014-07-15 13:04:39
阅读次数:
307
模板与泛型编程--模板定义[续]四、模板类型形参 类型形参由关键字class或 typename后接说明符构成。在模板形参表中,这两个关键字具有相同的含义,都指出后面所接的名字表示一个类型。 模板类型形参可作为类型说明符在模板中的任何地方,与内置类型说明符或类类型说明符的使用方式完全相同。具体而言,它可以用于指定返回类型或函数形参类型,以及在函数体中用于变量声明或强制类型转换。 template ...
分类:
编程语言 时间:
2014-05-22 06:37:23
阅读次数:
407
模板与泛型编程--类模板成员[续1]二、非类型形参的模板实参template
class Screen
{
public:
Screen():screen(hi * wid,'#'),
cursor(hi * wid),height(hi),width(wid) {}
//..
private:
std::string screen;
std:...
分类:
编程语言 时间:
2014-05-21 14:00:04
阅读次数:
332
Nontype Template Parameters非类型模板参数对 function
templates 和 class templates 而言,template parameters 并不一定非要是类型(types)
不可,它们也可以是常规的(一般的)数值。当你以类型(types)作为 te...
分类:
其他好文 时间:
2014-05-10 23:08:54
阅读次数:
560