新書推薦:
《
500万次倾听:陪伤心的人聊聊
》
售價:NT$
245.0
《
英国商业500年(见证大国崛起与企业兴衰,启迪未来商业智慧。)
》
售價:NT$
367.0
《
万千心理·儿童心理治疗中的心智化:临床实践指导
》
售價:NT$
398.0
《
自我囚禁的人:完美主义的心理成因与自我松绑(破除你对完美主义的迷思,尝试打破自我评价过低与焦虑的恶性循环)
》
售價:NT$
301.0
《
周易
》
售價:NT$
203.0
《
东南亚的传统与发展
》
售價:NT$
306.0
《
乾隆制造
》
售價:NT$
398.0
《
资治通鉴臣光曰辑存 资治通鉴目录(司马光全集)(全二册)
》
售價:NT$
1316.0
編輯推薦:
u 取材新颖,实时性强。本书以C11标准为指导,结合C14和C17,深入浅出地介绍了标准C面向对象程序设计的相关知识。
u 重点突出,内容丰富。本书重点讲解C面向对象程序设计的特征、思想与方法,同时也兼顾C非面向对象的特征及对C语言的扩展。
u 循序渐进,由浅入深。为了便于读者学习,本书首先介绍了C的发展史、程序设计的基本方法,从C非面向对象方面的特征包括对C语言的扩展到C面向对象程序设计,从泛型编程技术到标准模板库;*后介绍C的异常处理机制,通过层层深入的方式引领读者进行C面向对象程序设计的世界。
u 实例丰富,案例完整。每个知识点都通过简单易懂的实例进行剖析,书中范例均在GCC 8.3.1下运行通过,凡是带有main函数的程序都是完整的程序,可以直接在计算机上编译运行。
內容簡介:
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构,同样也是一种程序设计方法学。世界上接近50%的程序员都采用C作为软件开发语言。本书从实际应用出发,系统地介绍了C程序设计的语法、面向对象程序设计的特征(封装、继承与多态)、泛型编程基础(模板与标准模板库)、异常处理机制,并配以详实的案例示例。
關於作者:
周法国,男,博士,中国计算机学会会员,ACM会员,IEEE CS会员,1999年7月于山东大学计算数学及其应用软件专业毕业,获理学学士学位,2009年1月于北京科技大学计算机应用技术专业研究生毕业,获工学博士学位,主要研究方向为数据库、知识发现与智能系统以及自然语言处理,在国内外期刊及国际会议上共发布学术论文20余篇,其中被EI、ISTP检索10多篇。参加国家863项目、国家重大仪器专项项目、国防科工局重点项目、国家质量检验检疫总局科技计划项目等多项课题的研究工作,负责国家科技支撑计划课题子课题一项。
1999年7月2003年8月在聊城大学计算机系工作,主要讲授高等数学、数值计算、C语言程序设计等课程
2009年3月至今在中国矿业大学(北京)计算机系工作,主要讲授大型实用数据库(Oracle)、CC程序设计、离散数学、算法设计与分析等课程
2012年参与的项目《认知结构教学论的构造与实践---国际视野中教学理论体系的研究与实践》获北京市高等教育教学成果奖一等奖,个人排名第8
目錄 :
第1章 C与面向对象程序设计概述1
1.1 面向过程与面向对象程序设计1
1.1.1 面向过程程序设计1
1.1.2 面向对象程序设计4
1.2 面向对象程序设计的主要特征5
1.2.1 封装6
1.2.2 继承6
1.2.3 多态7
1.3 程序设计语言的发展史7
1.3.1 机器语言7
1.3.2 汇编语言7
1.3.3 高级语言8
1.4 C语言9
1.4.1 C的产生9
1.4.2 C的发展与标准化10
1.4.3 C语言的特点11
1.4.4 C程序结构12
1.4.5 标准C程序设计14
1.5 小结15
第2章 数据与输入输出16
2.1 数据与数据类型16
2.1.1 C的数据类型16
2.1.2 C字面值常量18
2.2 C数据的输入输出21
2.2.1 流的概念与标准输入输出流22
2.2.2 cin与数据输入22
2.2.3 cout与数据输出32
2.2.4 输入输出格式控制36
2.2.5 字符串数据的输入与输出42
2.3 文件流和文件操作43
2.3.1 文件和文件流43
2.3.2 文件读写44
2.4 小结46
第3章 C基础47
3.1 变量及运算47
3.1.1 变量定义及其初始化47
3.1.2 常量表达式和constexpr50
3.1.3 处理类型52
3.1.4 类型转换54
3.2 指针55
3.2.1 指针的概念55
3.2.2 new和delete59
3.2.3 智能指针62
3.2.4 数组与指针68
3.3 引用70
3.3.1 左值引用70
3.3.2 右值引用74
3.4 类型转换74
3.4.1 隐式类型转换75
3.4.2 显式类型转换77
3.5 函数80
3.5.1 函数基础80
3.5.2 参数传递83
3.5.3 默认实参90
3.5.4 函数返回值91
3.5.5 函数重载96
3.5.6 内联函数99
3.5.7 constexpr函数100
3.6 命名空间101
3.6.1 命名空间的定义101
3.6.2 访问命名空间成员104
3.7 小结106
第4章 类与对象107
4.1 struct与class107
4.1.1 聚合类107
4.1.2 C对struct的扩展108
4.1.3 访问权限109
4.1.4 类111
4.1.5 抽象与封装112
4.2 类的成员114
4.2.1 数据成员114
4.2.2 成员函数115
4.2.3 嵌套类型118
4.3 类类型与对象120
4.3.1 类类型120
4.3.2 对象121
4.4 构造函数和析构函数125
4.4.1 构造函数和类内初始值125
4.4.2 默认构造函数126
4.4.3 重载构造函数与默认实参129
4.4.4 默认构造函数的作用131
4.4.5 构造函数与初始化列表132
4.4.6 委托构造函数135
4.4.7 构造函数与隐式类类型转换136
4.4.8 析构函数138
4.5 对象的复制、赋值与移动140
4.5.1 复制构造函数141
4.5.2 复制赋值运算符144
4.5.3 移动构造函数和移动赋值运算符147
4.5.4 阻止复制152
4.6 类的其他访问控制154
4.6.1 this指针154
4.6.2 成员指针155
4.6.3 友元158
4.7 静态成员161
4.7.1 静态数据成员161
4.7.2 静态成员函数163
4.8 小结163
第5章 组合与继承165
5.1 代码重用165
5.2 组合166
5.2.1 组合的一般形式166
5.2.2 对象成员的初始化167
5.2.3 应用类的组合解决实际问题169
5.3 继承170
5.3.1 继承的实现171
5.3.2 公有继承174
5.3.3 私有继承176
5.3.4 保护继承177
5.3.5 基类成员的访问177
5.4 派生类对基类的扩展178
5.4.1 继承与静态成员178
5.4.2 友元与继承178
5.4.3 改变基类成员在派生类中的访问权限180
5.4.4 继承中的类作用域180
5.4.5 名字冲突与继承181
5.4.6 类型转换与继承182
5.4.7 派生类对基类成员的访问184
5.5 派生类的构造函数和析构函数184
5.5.1 派生类构造函数185
5.5.2 派生类析构函数189
5.5.3 派生类的复制控制成员191
5.6 多继承193
5.6.1 多继承的实现193
5.6.2 多继承方式下成员的二义性195
5.6.3 多继承派生类的构造函数和析构函数195
5.6.4 多继承派生类的复制和移动操作197
5.6.5 类型转换与多个基类198
5.6.6 多继承下的类作用域198
5.7 虚继承199
5.7.1 虚基类200
5.7.2 虚继承的一般形式201
5.7.3 虚基类成员的可见性201
5.7.4 构造函数与虚继承202
5.8 小结206
第6章 多态207
6.1 多态概述207
6.1.1 多态的概念207
6.1.2 多态的实现208
6.1.3 多态的意义210
6.2 虚函数211
6.2.1 基类对象与派生类对象之间的关系211
6.2.2 虚函数的引入与意义214
6.2.3 override和final说明符216
6.2.4 虚函数的特征218
6.2.5 虚函数与默认实参224
6.2.6 回避虚函数的机制225
6.2.7 虚函数的实现技术225
6.2.8 虚析构函数228
6.3 纯虚函数和抽象类230
6.3.1 纯虚函数230
6.3.2 抽象类231
6.3.3 应用抽象类实现多态的银行账户管理系统233
6.4 运行时类型识别237
6.4.1 dynamic_cast237
6.4.2 typeid241
6.5 小结244
第7章 运算符重载245
7.1 运算符重载基础245
7.1.1 运算符重载的概念245
7.1.2 运算符重载的实现245
7.1.3 运算符重载的限制247
7.2 输入输出运算符的重载249
7.2.1 重载输出运算符7.2.2 重载输入运算符251
7.3 算术运算符和关系运算符的重载252
7.3.1 算术运算符的重载252
7.3.2 相等运算符的重载252
7.3.3 关系运算符的重载253
7.4 赋值运算符的重载254
7.4.1 复制赋值运算符的重载254
7.4.2 移动赋值运算符的重载255
7.4.3 基于列表初始化的赋值运算符的重载256
7.4.4 复合赋值运算符的重载256
7.5 下标运算符的重载257
7.6 自增和自减运算符的重载258
7.6.1 定义自增和自减前缀运算符258
7.6.2 区分前置和后置运算符259
7.7 成员访问运算符的重载260
7.8 函数调用运算符的重载261
7.8.1 函数调用运算符重载的实现形式262
7.8.2 含有状态的函数对象类262
7.8.3 lambda函数263
7.9 类型转换运算符的重载266
7.9.1 用构造函数实现的隐式数据类型转换266
7.9.2 类型转换运算符267
7.9.3 类型转换的二义性270
7.1 0小结274
第8章 模板与泛型编程276
8.1 模板概述276
8.1.1 模板的概念276
8.1.2 模板的实现技术277
8.2 函数模板278
8.2.1 函数模板的定义278
8.2.2 实例化模板参数280
8.2.3 模板类型参数280
8.2.4 非类型模板参数284
8.2.5 函数模板特化285
8.2.6 模板编译286
8.3 类模板287
8.3.1 类模板的定义287
8.3.2 类模板的实例化288
8.3.3 类模板的成员函数289
8.3.4 类模板的使用290
8.3.5 类模板的静态成员291
8.4 模板设计中的几个独特问题292
8.4.1 默认模板实参292
8.4.2 成员模板293
8.4.3 控制实例化295
8.4.4 可变参数函数模板297
8.5 模板实参推断299
8.5.1 类型转换与模板类型参数299
8.5.2 函数模板显式实参301
8.5.3 函数指针和实参推断302
8.5.4 模板实参推断和引用303
8.6 小结306
第9章 标准模板库307
9.1 函数对象307
9.1.1 标准库定义的函数对象307
9.1.2 在算法中使用标准库函数对象308
9.2 顺序容器309
9.2.1 顺序容器类型309
9.2.2 容器类型的通用操作310
9.2.3 顺序容器的操作315
9.2.4 顺序容器适配器319
9.3 迭代器321
9.3.1 迭代器的运算321
9.3.2 与迭代器有关的容器操作324
9.3.3 反向迭代器325
9.4 关联容器325
9.4.1 pair类型326
9.4.2 关联容器中的类型327
9.4.3 关联容器迭代器328
9.4.4 向关联容器中添加元素329
9.4.5 从关联容器中删除元素330
9.4.6 map的下标操作330
9.4.7 访问关联容器中的元素331
9.5 泛型算法332
9.5.1 查找与统计333
9.5.2 排序334
9.6 小结335
第10章异常处理336
10.1 异常处理机制336
10.1.1 异常处理的概念336
10.1.2 异常处理的结构337
10.2 异常与函数340
10.2.1 在函数中处理异常340
10.2.2 在函数调用时处理异常341
10.3 异常处理的特殊情况342
10.3.1 重新抛出异常342
10.3.2 捕获所有异常343
10.3.3 noexcept异常说明343
10.4 标准异常及层次结构344
10.4.1 标准库异常344
10.4.2 自定义异常类型346
10.4.3 处理派生类的异常347
10.5 小结350
参考文献351
內容試閱 :
C是一种广泛使用的面向对象程序设计语言,常用于系统开发、算法设计等领域,是迄今为止最受广大程序员喜爱的、最强大的编程语言之一。它既支持面向过程的程序设计,也支持封装、继承或多态等面向对象的重要特征。
目前市面上很多优秀的C或面向对象程序设计书籍都是以C的基础语法为出发点,或侧重于语言的具体应用,或侧重于纯面向对象程序设计基本原理的阐述,造成了面向对象程序设计学习人员不能全局领略C的详细内容。本书作者以具有一定C语言或程序设计基础的初学者为对象,使用简洁易懂的语言,力求让读者轻松学习面向对象程序设计的基本原理与方法。
全书共10章,分为四部分。第一部分为C基础篇,由第1~3章组成,包括C概述、数据输入输出以及C非面向对象的基础语法知识。第二部分为面向对象程序设计基础特征篇,由第4~7章组成,包括类与对象、组合与继承、多态以及运算符重载,主要介绍面向对象程序设计的三大特征及其C实现。第三部分为泛型编程篇,由第8章和第9章组成,包括模板与泛型编程、标准模板库。第四部分为异常处理篇,即第10章,主要介绍C的异常处理机制与异常类。
本书第1~4章由高文超编写,第5~10章由周法国编写,最后由周法国负责定稿。
本书在编写过程中,得到了清华大学出版社的具体指导与大力帮助,另参考文献中涉及的专家学者为我们提供了学习的机会,在此一并致谢!
由于编者水平有限,书中难免有疏漏之处,敬请赐教!
作者2020年5月于北京