《Effective C++》第七章:模板与泛型编程
了解隐式接口和编译期多态。面向对象编程总是采用显式地声明一个接口,并在子类中提供特殊的实现,进而实现运行期多态。模板类中的接口往往是隐式的,隐式的意思是,编写模板时,假设需要的接口类T中是存在的,至于实例化模板的类是否真的具有该接口,编译时才知道(如果实例化类型没有实现这些接口,则编译失败)。这正是模板多态的展现方式,由实例化模板的类决定具体的行...
分类:
编程语言 时间:
2015-04-23 17:37:54
阅读次数:
141
一、函数模板模板定义以关键字template开始,后跟一个模板参数列表,在模板定义中,模板参数列表不能为空。模板类型参数:类型参数前必须使用class或typename关键字。非类型模板参数:表示一个值而不是一个类型数组引用形参://&arr两端的括号必不可少void print(int(&arr)...
分类:
其他好文 时间:
2015-04-10 11:11:27
阅读次数:
159
泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。
(1)定义函数模板(function template)
函数模板是一个独立于类型的函数,可以产生函数的特定类型版本。
// implement strcmp-like generic compare function
template
int compare(const T &v1, const T &...
分类:
编程语言 时间:
2015-03-30 14:43:04
阅读次数:
296
第7部分:模板与泛型编程
所谓泛型编程就是以独立于任何特定类型的方式编写代码。使用泛型程序时,我们需要提供具体程序实例所操作的类型或值。模板是泛型编程思想的一种实现,也是C++研发者思想精髓所在。...
分类:
编程语言 时间:
2014-12-31 20:15:10
阅读次数:
215
高效C++ --模板与泛型编程
在C++中模板体现的是编译器多态,virtual体现的是运行期多态。
关于typename的双重含义:
在声明template参数时,不论使用关键字class或typename,意义完全相同。
但是C++并不总是把class和typename视为邓建。有时候必须使用typename。
Template内出血的名称如果依于某个template参数,称之为从属...
分类:
编程语言 时间:
2014-12-15 23:42:19
阅读次数:
405
1:本章实例中,compare(const T &a,const T &b),在调用实例compare(“s”,”ss”)时编译出错,这是因为字面值”s”,”ss”的类型不一样,char * 的长度不一致导致;而如果是使用compare(const T a, const T b),则编译通过,因为这...
分类:
其他好文 时间:
2014-12-01 20:37:48
阅读次数:
155
面向对象编程和泛型编程都能处理在编写程序时不知道类型的情况。不同之处:OOP能处理类型在程序运行之前都未知的情况;而泛型编程中,在编译时就能获知类型了
模板参数类别不能为空。
模板参数表示在类或函数定义中用到的类型或值。
template
int compare(const T &v1 , const T &v2)
{
if(v1
if(v2
return...
分类:
编程语言 时间:
2014-09-16 14:21:43
阅读次数:
382
模板与泛型编程--模板编译模型引言: 当编译器看到模板定义的时候,它不马上产生代码。仅仅有在用到模板时,假设调用了函数模板或定义了模板的对象的时候,编译器才产生特定类型的模板实例。 一般而言,当调用函数时[不是模板],编译器仅仅需看到函数的声明。相似的,定义类类型的对象时,类定义必须可用,但成员函数...
分类:
编程语言 时间:
2014-08-26 19:11:16
阅读次数:
288
模板与泛型编程--模板定义引言: 所谓泛型程序就是以独立于不论什么特定类型的方式编写代码。使用泛型程序时,我们须要提供详细程序实例所操作的类型或值。 模板是泛型编程的基础。使用模板时能够无须了解模板的定义。 泛型编程与面向对象编程一样,都依赖于某种形式的多态性。面向对象编程中的多态性在执行时应用于存...
分类:
编程语言 时间:
2014-07-19 21:04:49
阅读次数:
283
模板与泛型编程--模板特化[续]三、特化成员而不特化类 除了特化整个模板之外,还能够仅仅特化push和pop成员。我们将特化push成员以复制字符数组,而且特化pop成员以释放该副本使用的内存:templatevoid Queue::push(const char *const &val){ ...
分类:
编程语言 时间:
2014-07-09 18:14:29
阅读次数:
212