C++模板与泛型编程(二)——类模板

本文深入探讨C++的类模板,讲解其格式、实例化、成员函数和友元的特性,并通过实现STL中的Vector来具体阐述类模板的应用。
摘要由CSDN通过智能技术生成

类模板是用来生成类的蓝图的,与函数模板的不同之处是,编译器不能为类模板推断模板参数类型。

模板类也是模板,必须以关键字template开头,后接模板形参表。

1、类模板格式

template<class 形参名1, class 形参名2, ...class 形参名n>

class 类名

{ ... };


2、类模板实例化

只要有一种不同的类型,编译器就会实例化出一个对应的类。

SeqList<int > sl1;

SeqList<double > sl2;

当定义上述两种类型的顺序表时,编译器会使用int和double分别代替模板形参,重新编写SeqList类,最后创建名为SeqList<int>和SeqList<double>的类。

一个类模板的每个实例都形成一个独立的类。

类模板的名字不是一个类型名,。类模板用来实例化类型,而一个实例化的类型总是包含模板参数的。

一个类模板中的代码如果使用了另外一个模板,通常不将一个实际类型(或值)的名字用作其模板形参。相反的,我们通常将模板自己的参数当做被使用模板的实参。


3、类模板的成员函数

与其他任何类相同,我们既可以在类模板内部,也可以在类模板外部为其定义成员函数,且定义在类模板内的成员函数被隐式声明为内联函数。

类模板的成员函数本身是一个普通函数,但是,类模板的每个实例都有其自己版本的成员函数。因此,类模板的成员函数具有和模板相同的模板参数,因而,定义在类模板之外的成员函数就必须以关键字template,后接模板参数列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值