文档详情

北邮课件--c++(b).pdf

发布:2017-05-17约2.35万字共59页下载文档
文本预览下载声明
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;
显示全部
相似文档