C++语言导学 第四章 类 - 4.1 引言
4.1 引言
本章和下一章的目标是在不涉及过多细节的前提下向读者展现C++是如何支持抽象和资源管理的:
- 本章正式介绍定义和使用新类型(用户自定义类型,user-defined type)的方法。特别是,本章会介绍具体类(concrete class)、抽象类(abstract class)和类层次(class hierarchy)的基本性质、实现技术以及语言设施。
- 第五章介绍一些在C++中已经定义了含义的操作,如构造函数、析构函数和赋值操作。这一章概括了如何组合使用这些操作来控制对象的生命周期并支持简单、高效且完整的资源管理。
- 第六章介绍模板,这是一种用(其他)类型和算法对类型和算法进行参数化的机制。用户自定义类型与内置类型上的计算是用函数表达的,有时泛化为模板函数(template function)和函数对象(function object)。
- 第七章概述支持泛型编程的概念、技术和语言特性。重点介绍定义和使用概念(concept)来准确说明接口以及指导设计。这一章还介绍了可变参数模板(variation template),它是用来说明最通用、最灵活的接口。
这些语言设施是用于支持所谓的面向对象编程(object-oriented programming)和泛型编程(generic programming)风格的。第8~15章会延续这些主题,通过一些示例展示标准库设施及其使用。
C++最核心的语言特性就是类(class)。类是一种用户自定义的数据类型,用于在程序代码中表示某种概念。无论何时,只要对程序的设计包含一个有用的概念、想法或实体等,都应该设法把它表示为程序中的一个类,这样,我们的想法就能表达为代码,而不是仅存在于我们的头脑中、设计文档里或者注释里。如果一个程序是用一组精心挑选的类构成的,会远比所有的东西都是直接用内置类型构造的版本更容易理解、更容易设计正确。特别是,库通常提供的就是类。
本质上,基础类型、运算符和语句之外的所有语言设施存在的目的就是帮助我们定义更好的类以及更方便地使用它们。“更好”的含义是更加正确、更容易维护、更有效率、更优雅、更易用、更易读以及更易推断。大多数编程技术依赖于特定类别的类的设计与实现。程序员的需求和偏好千差万别,因此C++对类的支持也是非常宽泛的。接下来,我们只考虑对三种重要的类的基本支持:
- 具体类(参见4.2节)
- 抽象类(参见4.3节)
- 类层次中的类(参见4.5节)
很多有用的类都可以归到这三个类别当中。更多的类可以看作这些类的简单变形或是通过组合相关技术而实现的。