北邮课件--c++(b).pdf
文本预览下载声明
C++编程(11)
Tang Xiaosheng
北京邮电大学电信工程学院
第13章模板
o 引言
o 一个简单的string模板
o 函数模板
o 用模板参数述策略
o 专门化
o 派生和模板
o 源代码组织
o 忠告
Beijing University of Posts Telecommunications young@buptnet.edu.cn
13.1 引言
o 模板供了一种很简单的方式来表述范围广
泛的一般性概念,以及一些组合它们的简单
方法,利用模板产生出来的类和函数,在运
行时和空间效率方面,可以与手工写出的更
特殊的代码媲美
o 模板直接支持采用类型作为参数的程序设计
o 这里对于模板的介绍将集中关注与标准库的
设计、实现和使用有关的各种技术
Beijing University of Posts Telecommunications young@buptnet.edu.cn
引言
o 标准库要求的是更高水平的通用性、灵活性
和效率
o 每个主要的标准库抽象都被表示为一个模板
(string, ostream, complex, list和map
等),所有的关键操作(string比较、输出运
算符、complex的加法、取得list的下
一个元素、sort()等)也是如此
o 下面通过一些小例子阐述模板的各种基本技
术
Beijing University of Posts Telecommunications young@buptnet.edu.cn
引言
o 13.2 定义和使用类模板的基本机制
o 13.3 函数模板,函数重载和类型推断
o 13.4 用模板参数刻画通用型算法的策略
o 13.5 通过多个定义为一个模板供多种实
现
o 13.6 派生和模板(运行时的和编译时的多态
性)
o 13.7 源代码组织
Beijing University of Posts Telecommunications young@buptnet.edu.cn
13.2 一个简单的String模板
o 串是一个能够保存一些字符的类,而且供
了各种串的基本操作
o 实际应用中,我们可能希望为多种不同种类
的字符(有符号字符、无符号字符、中文字
符、希腊字符)供这样的功能,因此希望
能够以最不依赖于特定字符种类的方式给出
串的概念
o 因此可以将以前的char类型的串抽象为一个
更具普遍性的串类型
Beijing University of Posts Telecommunications young@buptnet.edu.cn
一个简单的String模板
templateclass C class String
{
struct Srep;
Srep* rep; templateclass C前缀说明当
public: 前正在声明的是一个模板,它有
String(); 一个将在声明中使用的类型参数
String(Const C*); C
String(const String);
C的作用域将一直延伸到由这个
C read(int i) const; templateclass C作为前缀的
// … 声明的结束处
};
C代表了一种类型,不必一定是
某个类的名称
Beijing University of Posts Telecommunications young@buptnet.edu.cn
示例
Stringchar cs;
显示全部