1. “类模板”还是“模板类”
在C++中,类和联合(union)都被称为类类型,如果不加额外的限定,我们通常所说的“类”是指:用关键字class/struct引入的类类型。需要特别说明的是,类类型包括联合,而“类”不包括联合。
类模板:该类是一个模板那,它代表的是整个类家族的参数化描述;
模板类:a)作为类模板的同义词;b)从模板产生的类。
2. 声明和定义
声明是一种C++构造,它引入或重新引入一个名称到某个C++作用域中,但是有效的声明并不要求包含被引入对象的细节。
如果已经确定这种C++构造的细节,或者对于变量而言,已经为它分配了内存空间,那么声明就变成了定义。对于“类类型或者函数的”的定义,这意味着必须提供一对花括号内部的实体。对于变量而言,进行初始化和不具有extern关键字的声明都是定义。
对于类模板或者函数模板的声明,如果本身具有代码实体,我们就称之为定义。
3. 模板实参和模板参数
模板参数是指:位于模板声明或定义内部,关键字template后面所列举的名称
模板实参是指:用来替换模板参数的各个对象。
在C++中,类和联合(union)都被称为类类型,如果不加额外的限定,我们通常所说的“类”是指:用关键字class/struct引入的类类型。需要特别说明的是,类类型包括联合,而“类”不包括联合。
类模板:该类是一个模板那,它代表的是整个类家族的参数化描述;
模板类:a)作为类模板的同义词;b)从模板产生的类。
2. 声明和定义
声明是一种C++构造,它引入或重新引入一个名称到某个C++作用域中,但是有效的声明并不要求包含被引入对象的细节。
class C;
void f(int p);
extern int v;
如果已经确定这种C++构造的细节,或者对于变量而言,已经为它分配了内存空间,那么声明就变成了定义。对于“类类型或者函数的”的定义,这意味着必须提供一对花括号内部的实体。对于变量而言,进行初始化和不具有extern关键字的声明都是定义。
class C { };
void f(int p) {
...
}
extern int v = 1; // 一个初始化器使之成为V的定义
int w;
对于类模板或者函数模板的声明,如果本身具有代码实体,我们就称之为定义。
3. 模板实参和模板参数
模板参数是指:位于模板声明或定义内部,关键字template后面所列举的名称
模板实参是指:用来替换模板参数的各个对象。