本书全面、系统地讲述C语言和C++语言的基础知识、基本规则以及编程方法,详尽地讲述C++语言面向对象的重要特征:类和对象、继承性和派生类、多态性和虚函数等内容。本书偏重应用,文字通俗易懂,内容由浅入深,讲解突出重点。本书配有丰富的例题,每章后面备有形式多样的练习题。本书还提供上机指导,扫描前言中的二维码可以下载相应的文档。
吕凤翥,北京大学教授,原北京大学计算中心教研室主任,从事计算机教学和科研工作30多年。具有丰富的计算机教学经验;所编写的计算机语言方面的教材结构清晰、叙述流畅、适合教学,被众多学校广泛使用。编写出版计算机技术类著作30余种,其中出版的《C++语言基础教程》已发行20余万册
目 录
第1章 C++语言概述 (1)
1.1 面向对象语言简介 (1)
1.1.1 面向对象的概念 (1)
1.1.2 编程语言的发展 (2)
1.1.3 面向对象语言的特点 (3)
1.2 C语言与C++语言的关系 (3)
1.2.1 C++语言对C语言的改进 (4)
1.2.2 C++语言对面向对象方法的支持 (4)
1.3 C++语言的词法和词法规则 (4)
1.3.1 C++语言的字符集 (4)
1.3.2 单词及词法规则 (5)
1.4 C++程序结构上的特点 (6)
1.4.1 C++程序的两个实例 (6)
1.4.2 C++程序结构特点 (7)
1.4.3 C++程序的书写格式 (8)
1.5 C++程序的实现 (8)
1.5.1 C++程序的编辑、编译和运行 (8)
1.5.2 Visual C++ 6.0编译系统的用法简介 (9)
习题1 (15)
第2章 变量和常量 (18)
2.1 数据类型 (18)
2.1.1 基本数据类型 (18)
2.1.2 自定义数据类型 (19)
2.2 变量 (19)
2.2.1 变量的名字 (19)
2.2.2 变量的类型 (20)
2.2.3 变量的值 (20)
2.3 常量 (21)
2.3.1 整型常量 (21)
2.3.2 浮点型常量 (21)
2.3.3 字符型常量 (22)
2.3.4 字符串常量 (23)
2.3.5 枚举常量 (23)
2.3.6 常量的定义格式 (25)
2.4 数组 (26)
2.4.1 数组的定义格式 (26)
2.4.2 数组元素的表示 (26)
2.4.3 数组的赋值 (27)
2.4.4 字符数组 (28)
2.5 键盘输入和屏幕输出 (30)
2.5.1 键盘输入 (30)
2.5.2 屏幕输出 (31)
习题2 (35)
第3章 运算符和表达式 (38)
3.1 运算符的种类及其功能 (38)
3.1.1 算术运算符 (38)
3.1.2 关系运算符 (39)
3.1.3 逻辑运算符 (39)
3.1.4 位操作运算符 (40)
3.1.5 赋值运算符 (40)
3.1.6 其他运算符 (41)
3.2 运算符的优先级和结合性 (43)
3.2.1 运算符的优先级 (43)
3.2.2 运算符的结合性 (44)
3.3 表达式 (44)
3.3.1 表达式的种类 (44)
3.3.2 表达式的值和类型 (45)
3.4 类型转换 (50)
3.4.1 保值的隐式转换 (50)
3.4.2 强制转换 (51)
3.5 类型定义 (51)
习题3 (54)
第4章 语句和预处理 (58)
4.1 表达式语句和复合语句 (58)
4.1.1 表达式语句和空语句 (58)
4.1.2 复合语句和分程序 (59)
4.2 选择语句 (59)
4.2.1 条件语句 (59)
4.2.2 开关语句 (62)
4.3 循环语句 (65)
4.3.1 while循环语句 (65)
4.3.2 do-while循环语句 (66)
4.3.3 for循环语句 (67)
4.3.4 多重循环 (69)
4.4 转向语句 (72)
4.4.1 goto语句 (72)
4.4.2 break语句 (73)
4.4.3 continue语句 (74)
4.5 预处理功能 (74)
4.5.1 宏定义命令 (75)
4.5.2 文件包含命令 (77)
4.5.3 条件编译命令 (78)
习题4 (84)
第5章 函数和存储类 (89)
5.1 函数的定义和说明 (89)
5.1.1 函数的定义格式 (90)
5.1.2 函数的说明方法 (91)
5.2 函数的参数和返回值 (91)
5.2.1 函数参数的求值顺序 (91)
5.2.2 设置函数参数的默认值 (92)
5.2.3 函数的返回值 (93)
5.3 函数的调用方式 (94)
5.3.1 函数的传值调用 (94)
5.3.2 函数的引用调用 (95)
5.4 函数的嵌套调用和递归调用 (95)
5.4.1 函数的嵌套调用 (95)
5.4.2 函数的递归调用 (97)
5.5 内联函数和重载函数 (100)
5.5.1 内联函数 (100)
5.5.2 重载函数 (101)
5.6 标识符的作用域 (104)
5.6.1 作用域规则 (104)
5.6.2 作用域种类 (104)
5.6.3 关于重新定义标识符的作用域规定 (105)
5.7 变量的存储类 (106)
5.7.1 自动类变量和寄存器类变量 (106)
5.7.2 外部类变量 (107)
5.7.3 静态类变量 (108)
5.8 函数的存储类 (111)
5.8.1 内部函数 (111)
5.8.2 外部函数 (112)
习题5 (121)
第6章 指针与引用 (126)
6.1 指针 (126)
6.1.1 指针的概念 (126)
6.1.2 指针定义格式 (127)
6.1.3 指针的赋值 (127)
6.1.4 指针的运算 (128)
6.2 指针与数组 (130)
6.2.1 数组名是一个指针常量 (130)
6.2.2 数组元素的指针表示 (131)
6.2.3 字符数组、字符指针和字符串处理函数 (133)
6.2.4 指向数组的指针和指针数组 (136)
6.3 指针与函数 (138)
6.3.1 指针用作函数参数 (138)
6.3.2 指向函数的指针和指针函数 (139)
6.4 引用 (141)
6.4.1 引用的概念 (141)
6.4.2 引用的应用 (143)
习题6 (153)
第7章 结构和联合 (158)
7.1 结构 (158)
7.1.1 结构和结构变量的定义 (158)
7.1.2 结构变量成员的表示 (159)
7.1.3 结构变量的赋值 (160)
7.1.4 结构变量的运算 (160)
7.2 结构与数组 (162)
7.2.1 数组作为结构成员 (162)
7.2.2 结构变量作为数组元素 (162)
7.3 结构与函数 (165)
7.3.1 结构变量和指向结构变量的指针作为函数参数 (165)
7.3.2 结构变量和指向结构变量的指针作为函数返回值 (167)
7.4 联合 (169)
7.4.1 联合的概念 (169)
7.4.2 联合的应用 (171)
习题7 (176)
第8章 类和简单对象 (180)
8.1 类的定义 (180)
8.1.1 类的概念 (180)
8.1.2 类的定义格式 (180)
8.1.3 类定义举例 (182)
8.2 对象的定义和成员表示 (184)
8.2.1 对象的定义格式 (184)
8.2.2 对象的成员表示 (184)
8.3 构造函数和析构函数 (186)
8.3.1 构造函数和析构函数的特点及功能 (186)
8.3.2 拷贝构造函数和默认拷贝构造函数 (188)
8.3.3 拷贝构造函数的其他用处 (190)
8.4 成员函数的特征 (192)
8.4.1 内联函数和外联函数 (192)
8.4.2 成员函数的重载性 (193)
8.4.3 成员函数可以设置参数默认值 (194)
8.5 静态成员 (195)
8.5.1 静态数据成员 (195)
8.5.2 静态成员函数 (197)
8.6 常成员 (198)
8.6.1 常数据成员 (198)
8.6.2 常成员函数 (199)
8.7 指向成员的指针 (200)
8.7.1 指向数据成员的指针 (200)
8.7.2 指向成员函数的指针 (201)
8.8 友元函数和友元类 (202)
8.8.1 友元函数 (202)
8.8.2 友元类 (204)
习题8 (210)
第9章 复杂对象 (217)
9.1 对象指针和对象引用 (217)
9.1.1 指向对象的指针和对象引用 (217)
9.1.2 this指针 (219)
9.2 对象数组和对象指针数组 (220)
9.2.1 对象数组 (220)
9.2.2 指向对象数组的指针 (222)
9.2.3 对象指针数组 (223)
9.3 一般常量和常对象 (224)
9.3.1 一般常量 (224)
9.3.2 常对象 (225)
9.4 子对象和堆对象 (227)
9.4.1 子对象 (227)
9.4.2 堆对象 (229)
9.5 类型转换和转换函数 (234)
9.5.1 类型的隐含转换 (234)
9.5.2 构造函数的类型转换功能 (234)
9.5.3 类型转换函数 (235)
9.6 类作用域和对象的生存期 (236)
9.6.1 类作用域 (236)
9.6.2 对象的生存期 (237)
9.6.3 局部类和嵌套类 (238)
习题9 (247)
第10章 继承性和派生类 (255)
10.1 基类和派生类 (255)
10.1.1 派生类的定义格式 (256)
10.1.2 继承的3种方式 (257)
10.1.3 基类与派生类的关系 (260)
10.2 单继承 (260)
10.2.1 派生类对基类成员的访问权限 (260)
10.2.2 派生类的构造函数和析构函数 (263)
10.2.3 子类型和赋值兼容规则 (269)
10.3 多继承 (271)
10.3.1 多继承的概念 (271)
10.3.2 多继承派生类的构造函数 (272)
10.3.3 多继承中的二义性问题 (274)
10.4 虚基类 (278)
10.4.1 虚基类的概念 (278)
10.4.2 虚基类及其派生类的构造函数 (280)
习题10 (286)
第11章 多态性和虚函数 (293)
11.1 函数重载 (293)
11.2 运算符重载 (295)
11.2.1 运算符重载中的几个问题 (295)
11.2.2 运算符重载函数的两种形式 (296)
11.2.3 其他运算符重载举例 (300)
11.3 静态联编和动态联编 (303)
11.3.1 静态联编 (304)
11.3.2 动态联编 (305)
11.4 虚函数 (305)
11.5 纯虚函数和抽象类 (310)
11.5.1 纯虚函数 (311)
11.5.2 抽象类 (312)
11.6 虚析构函数 (316)
习题11 (325)
第12章 C++语言的I/O流类库 (331)
12.1 屏幕输出操作 (333)
12.1.1 使用预定义的插入符 (333)
12.1.2 使用成员函数put( )输出一个字符 (335)
12.1.3 使用成员函数write( )输出一个字符串 (335)
12.2 键盘输入操作 (336)
12.2.1 使用预定义的提取符 (336)
12.2.2 使用成员函数get( )获取一个字符 (337)
12.2.3 使用成员函数getline( )获取一行字符 (338)
12.2.4 使用成员函数read( )读取多行字符 (339)
12.3 格式化输入和输出 (340)
12.3.1 使用流对象的成员函数进行格式输出 (340)
12.3.2 使用控制符进行格式输出 (343)
12.4 插入符和提取符的重载 (344)
12.5 磁盘文件的输入和输出 (345)
12.5.1 文件的打开和关闭操作 (346)
12.5.2 文本文件的读/写操作 (347)
12.5.3 二进制文件的读/写操作 (350)
12.5.4 随机访问数据文件 (352)
12.5.5 文件操作的其他函数 (355)
12.6 字符串流 (357)
12.6.1 ostrstream类的构造函数 (357)
12.6.2 istrstream类的构造函数 (358)
12.7 流错误的处理 (359)
12.7.1 状态字和状态函数 (359)
12.7.2 清除/设置流状态位 (360)
习题12 (362)