C++面向对象程序设计
¥
30.2
3.8折
¥
79
九五品
仅1件
作者[美]萨维奇 著;周靖 译
出版社清华大学出版社
出版时间2010-01
版次1
装帧平装
货号A8
上书时间2024-12-02
商品详情
- 品相描述:九五品
图书标准信息
-
作者
[美]萨维奇 著;周靖 译
-
出版社
清华大学出版社
-
出版时间
2010-01
-
版次
1
-
ISBN
9787302215301
-
定价
79.00元
-
装帧
平装
-
开本
大16开
-
纸张
胶版纸
-
页数
715页
-
字数
1050千字
-
正文语种
简体中文
- 【内容简介】
-
《C++面向对象程序设计(第7版)》是最优秀的C++入门教材,深受师生欢迎。作者结合自己多年的教学经验,根据教学大纲精心设计并编写了书中内容。与此同时,还采用了很多便于读者巩固所学知识的教学特征,比如各章开始处的小节总览,书中随处可见的总结框、编程提示和编程陷阱,各章结尾处的小结、习题和编程项目等。这些非常适合初学者掌握重要的编程概念。
全书共18章,6个附录。在讲解C++基础知识之后,直接引导学生深入函数、I/O流、类、控制流程、命名空间、数组、字符串、指针和动态数组、递归、模板、指针和链表、派生类、异常以及标准模板库。
WalterSavitch教授的C++入门经典教材
结构严谨、清晰,行文诙谐幽默,妙趣横生
80+技巧提示,30+生动有趣的编程实例
60+精彩视频,410+自测题,220+编程项目
- 【作者简介】
-
萨维奇(WalterSavitch),加州大学圣迭戈分校退休教授。1960年在加州大学伯克利分校获得博士学位,曾担任加州大学圣迭戈分校计算机科学系教授和认知科学跨学科博士项目主任。他在复杂性理论和并行计算模型方面做出了重要贡献,研究领域包括形式语言理论和计算语言学等。除本书外,他还著有一系列编程类教材,深受师生好评,被誉为读者最多的编程入门教材。
译者简介:
周靖,资深译者,涉猎广泛,具有深厚的技术功底和良好的文学素养。早期痴迷于硬件,《微型计算机》杂志特约作者。继而潜心钻研程序设计,并在这方面积累了丰富的经验。此后专职从事技术图书的翻译。其翻译风格严谨、准确、朴实、流畅,深受读者好评。代表译著有《C++面向对象程序设计》《Windows核心编程(第5版)》、《VisualC#2008从入门到精通》、《C#3.0本质论》等。
- 【目录】
-
第1章计算机和C++编程入门1
概述2
1.1计算机系统2
1.1.1硬件2
1.1.2软件5
1.1.3高级语言6
1.1.4编译器7
1.1.5历史回顾9
1.2编程和问题求解10
1.2.1算法10
1.2.2程序设计11
1.2.3面向对象编程12
1.2.4软件的生命周期13
1.3C++入门14
1.3.1C++语言的起源14
1.3.2一个C++示范程序15
1.3.3陷阱:在\n中错误地使用斜杠17
1.3.4编程提示:输入和输出语法17
1.3.5简单C++程序的布局18
1.3.6陷阱:在include的文件名前错误地添加一个空格19
1.3.7编译和运行C++程序20
1.3.8编程提示:让程序运行起来20
1.4测试和调试23
1.4.1程序错误的分类23
1.4.2陷阱:错误地假定程序正确24
小结25
自测题答案25
编程项目26
第2章C++基础知识29
概述30
预备知识30
2.1变量和赋值30
2.1.1变量30
2.1.2名称:标识符32
2.1.3变量声明33
2.1.4赋值语句34
2.1.5陷阱:未初始化的变量35
2.1.6编程提示:使用有意义的名称36
2.2输入和输出37
2.2.1使用cout进行输出37
2.2.2include预编译指令和命名空间38
2.2.3转义序列39
2.2.4编程提示:用\n或endl终止每一个程序40
2.2.5格式化带小数点的数字41
2.2.6用cin进行输入42
2.2.7设计输入和输出43
2.2.8编程提示:I/O中的换行43
2.3数据类型和表达式45
2.3.1int类型和double类型45
2.3.2其他数字类型46
2.3.3char类型47
2.3.4bool类型48
2.3.5string类简介48
2.3.6类型的兼容性50
2.3.7算术操作符和表达式51
2.3.8陷阱:除法中的整数53
2.3.9更多赋值语句54
2.4简单控制流程55
2.4.1一个简单的分支机制55
2.4.2陷阱:连续的不等式59
2.4.3陷阱:在该用==的时候错用了=59
2.4.4复合语句60
2.4.5简单的循环机制62
2.4.6递增操作符和递减操作符65
2.4.7编程实例:信用卡余额65
2.4.8陷阱:无限循环66
2.5程序风格69
2.5.1缩进69
2.5.2注释69
2.5.3为常量命名71
小结73
自测题答案73
编程项目76
第3章更多的控制流程81
概述82
预备知识82
3.1使用布尔表达式82
3.1.1布尔表达式求值82
3.1.2陷阱:将布尔表达式转换成int值85
3.1.3枚举类型(选读)87
3.2多路分支88
3.2.1嵌套语句88
3.2.2编程提示:在嵌套语句中使用花括号88
3.2.3多路if-else语句90
3.2.4编程实例:州收入税92
3.2.5switch语句94
3.2.6陷阱:忘记在switch语句中添加break97
3.2.7为菜单使用switch语句97
3.2.8语句块98
3.2.9陷阱:疏忽局部变量100
3.3C++循环语句详解102
3.3.1while语句回顾102
3.3.2再论递增操作符和递减操作符103
3.3.3for语句105
3.3.4陷阱:for语句中多余的分号109
3.3.5应该使用哪种循环109
3.3.6陷阱:未初始化的变量和无限循环111
3.3.7break语句111
3.3.8陷阱:嵌套循环中的break语句112
3.4设计循环113
3.4.1求和与求乘积的循环113
3.4.2终止循环114
3.4.3嵌套循环116
3.4.4调试循环118
小结121
自测题答案121
编程项目125
第4章过程抽象和返回一个值的函数129
概述130
预备知识130
4.1自顶向下设计130
4.2预定义函数130
4.2.1使用预定义函数131
4.2.2强制类型转换134
4.2.3强制类型转换的古老形式136
4.2.4陷阱:整数除法丢弃了小数部分136
4.3程序员自定义函数138
4.3.1函数定义138
4.3.2能返回布尔值的函数142
4.3.3另一种形式的函数声明142
4.3.4陷阱:实参顺序错误143
4.3.5函数定义语法总结144
4.3.6再论函数定义的位置144
4.3.7编程提示:在分支语句中使用函数调用145
4.4过程抽象146
4.4.1黑盒的比喻146
4.4.2编程提示:选择形参名称147
4.4.3编程提示:嵌套循环148
4.4.4案例分析:购买比萨150
4.4.5编程提示:使用伪代码155
4.5局部变量156
4.5.1函数如同小程序156
4.5.2编程实例:豌豆试验田158
4.5.3全局常量和全局变量158
4.5.4传值调用形参是局部变量160
4.5.5再论命名空间161
4.5.6编程实例:阶乘函数163
4.6重载函数名称165
4.6.1重载入门165
4.6.2编程实例;购买比萨(修订版)167
4.6.3自动类型转换169
小结171
自测题答案171
编程项目174
第5章所有子任务的函数177
概述178
预备知识178
5.1void函数178
5.1.1void函数的定义178
5.1.2编程实例:温度换算180
5.1.3void函数中的return语句181
5.2传引用调用形参183
5.2.1初探传引用调用183
5.2.2传引用调用详解185
5.2.3编程实例:swap_values函数187
5.2.4混合的参数列表188
5.2.5编程提示:应该使用哪种参数189
5.2.6陷阱:疏忽造成的局部变量190
5.3使用过程抽象192
5.3.1由函数来调用函数192
5.3.2前条件和后条件193
5.3.3案例分析:超市定价系统194
5.4测试和调试函数199
5.5常规调试技术203
5.5.1不抱成见203
5.5.2检查常见错误203
5.5.3定位错误203
5.5.4assert宏204
小结206
自测题答案206
编程项目209
第6章I/O流——对象和类入门213
概述214
预备知识214
6.1流和基本文件I/O214
6.1.1文件之于I/O的重要性215
6.1.2文件I/O215
6.1.3类与对象入门218
6.1.4编程提示:检查文件是否成功打开220
6.1.5文件I/O技术222
6.1.6追加到文件(选读)224
6.1.7文件名作为输入(选读)225
6.2流I/O工具228
6.2.1用流函数格式化输出228
6.2.2操纵元231
6.2.3流作为函数实参233
6.2.4编程提示:检查文件尾234
6.2.5命名空间的问题235
6.2.6编程实例:整理文件格式236
6.3字符I/O238
6.3.1get和put成员函数238
6.3.2putback成员函数(选读)241
6.3.3编程实例:检查输入241
6.3.4陷阱:输入中不期而遇的\n243
6.3.5eof成员函数245
6.3.6编程实例:编辑文本文件247
6.3.7预定义的字符函数248
6.3.8陷阱:toupper和tolower返回值249
小结251
自测题答案251
编程项目255
第7章数组261
概述262
预备知识262
7.1数组入门262
7.1.1声明和引用数组262
7.1.2编程提示:为数组使用for循环264
7.1.3陷阱:数组索引总是从零开始264
7.1.4编程提示:为数组长度使用一个已定义常量264
7.1.5数组在内存中的表示265
7.1.6陷阱:数组索引越界266
7.1.7初始化数组267
7.2函数中的数组269
7.2.1索引变量作为函数参数269
7.2.2整个数组作为函数参数270
7.2.3const参数修饰符273
7.2.4陷阱:不一致地使用const参数274
7.2.5返回数组的函数275
7.2.6案例分析:产量图275
7.3数组编程285
7.3.1部分填充数组285
7.3.2编程提示:不要吝啬形参287
7.3.3编程实例:数组搜索287
7.3.4编程实例:数组排序289
7.4多维数组293
7.4.1多维数组基础293
7.4.2多维数组参数294
7.4.3编程实例:二维打分程序295
7.4.4陷阱:在数组索引之间使用逗号297
小结299
自测题答案299
编程项目302
第8章字符串和向量309
概述310
预备知识310
8.1字符串的一种数组类型310
8.1.1C字符串值和C字符串变量311
8.1.2陷阱:为C字符串使用=和==313
8.1.3(cstring)中的其他函数315
8.1.4C字符串输入和输出318
8.1.5C字符串到数字的转换和可靠输入320
8.2标准string类324
8.2.1标准类string简介324
8.2.2string类的I/O326
8.2.3编程提示:getline的其他版本328
8.2.4陷阱:混合使用“cin))变量;”和getline329
8.2.5用string类进行字符串处理330
8.2.6编程实例:回文测试333
8.2.7string对象和C字符串之间的转换335
8.3向量337
8.3.1向量基础知识337
8.3.2陷阱:使用方括号时超出向量长度339
8.3.3编程提示:向量赋值具有良好行为340
8.3.4效率问题340
小结342
自测题答案342
编程项目344
第9章指针和动态数组349
概述350
预备知识350
9.1指针350
9.1.1指针变量351
9.1.2基本内存管理356
9.1.3陷阱:虚悬指针356
9.1.4静态变量和自动变量356
9.1.5编程提示:定义指针类型357
9.2动态数组359
9.2.1数组变量和指针变量359
9.2.2创建和使用动态数组360
9.2.3指针运算(选读)363
9.2.4多维动态数组(选读)364
小结367
自测题答案367
编程项目368
第10章定义类371
概述372
预备知识372
10.1结构372
10.1.1用于异种数据的结构372
10.1.2陷阱:结构定义中忘记添加分号376
10.1.3结构作为函数参数376
10.1.4编程提示:使用层次化结构377
10.1.5对结构进行初始化378
10.2类381
10.2.1定义类和成员函数381
10.2.2公共成员和私有成员384
10.2.3编程提示:将所有成员变量变成私有389
10.2.4编程提示:定义取值函数和赋值函数390
10.2.5编程提示:将赋值操作符用于对象391
10.2.6编程实例:BankAccount类(版本1)391
10.2.7总结类的一些特征395
10.2.8用于初始化的构造函数396
10.2.9编程提示:总是包括一个默认构造函数401
10.2.10陷阱:无参数构造函数402
10.3抽象数据类型404
10.3.1用于生成抽象数据类型的类404
10.3.2编程实例:类的另一种实现407
10.4继承411
10.4.1流类之间的继承关系411
10.4.2编程实例:另一个new_line函数414
10.4.3函数的默认参数(选读)414
10.4.4定义派生类415
小结419
自测题答案419
编程项目424
第11章类中的友元函数、重载操作符和数组429
概述430
预备知识430
11.1友元函数430
11.1.1编程实例:一个相等性函数430
11.1.2友元函数432
11.1.3编程提示:定义取值函数和友元函数434
11.1.4编程提示:同时使用成员函数和非成员函数434
11.1.5编程实例:Money类(版本1)435
11.1.6实现digit_to_int(选读)440
11.1.7陷阱:数字常量中的前置零440
11.1.8const参数修饰符441
11.1.9陷阱:不一致地使用const443
11.2重载操作符446
11.2.1重载操作符446
11.2.2用于自动类型转换的构造函数449
11.2.3重载一元操作符450
11.2.4重载))和((451
11.3数组和类458
11.3.1类数组458
11.3.2数组作为类成员460
11.3.3编程实例:用于部分填充数组的一个类461
11.4类和动态数组464
11.4.1编程实例:一个字符串变量类464
11.4.2析构函数466
11.4.3陷阱:指针作为传值调用参数468
11.4.4拷贝构造函数469
11.4.5重载赋值操作符473
小结476
自测题答案476
编程项目482
第12章独立编译和命名空间489
概述490
预备知识490
12.1独立编译490
12.1.1ADT回顾490
12.1.2案例分析:一个独立编译的类DigitalTime491
12.1.3使用#ifndef498
12.1.4编程提示:定义其他库500
12.2命名空间502
12.2.1命名空间和using预编译指令502
12.2.2创建命名空间503
12.2.3限定名称505
12.2.4命名空间的微妙之处(选读)506
12.2.5无名命名空间507
12.2.6编程提示:为命名空间选择一个名称510
12.2.7陷阱:混淆全局命名空间和无名命名空间511
小结513
自测题答案513
编程项目514
第13章指针和链表517
概述518
预备知识518
13.1节点和链表518
13.1.1节点518
13.1.2链表522
13.1.3在表头插入一个节点523
13.1.4陷阱:丢失节点525
13.1.5搜索链表526
13.1.6指针作为迭代器528
13.1.7在列表中插入和移除节点529
13.1.8陷阱:为动态数据结构
使用赋值操作符531
13.1.9链表的变体532
13.1.10由类构成的链表534
13.2栈和队列537
13.2.1栈537
13.2.2编程实例:一个栈类537
13.2.3队列541
13.2.4编程实例:一个队列类541
小结545
自测题答案545
编程项目547
第14章递归551
概述552
预备知识552
14.1面向任务的递归函数553
14.1.1案例分析:垂直数字553
14.1.2深入递归558
14.1.3陷阱:无穷递归559
14.1.4用于递归的栈560
14.1.5陷阱:栈溢出561
14.1.6递归与迭代561
14.2面向值的递归函数563
14.2.1要返回值的递归函数的常规形式563
14.2.2编程实例:另一个Powers函数563
14.3递归思想567
14.3.1递归设计技术567
14.3.2案例分析:二叉搜索(递归思想示例)568
14.3.3编程实例:一个递归成员函数574
小结577
自测题答案577
编程项目580
第15章继承583
概述584
预备知识584
15.1继承基础584
15.1.1派生类585
15.1.2派生类中的构造函数590
15.1.3陷阱:使用来自基类的私有成员变量592
15.1.4陷阱:私有成员函数根本不会继承593
15.1.5protected限定符593
15.1.6重定义成员函数595
15.1.7重定义与重载的比较597
15.1.8访问重定义的基函数598
15.2继承细节600
15.2.1不继承的函数600
15.2.2派生类中的赋值操作符和拷贝构造函数600
15.2.3派生类中的析构函数601
15.3多态性603
15.3.1晚期绑定603
15.3.2C++中的虚函数604
15.3.3虚函数和扩展类型兼容性607
15.3.4陷阱:切片问题610
15.3.5陷阱:不使用虚成员函数610
15.3.6陷阱:试图对虚成员函数
定义不齐全的类进行编译611
15.3.7编程提示:虚析构函数611
小结613
自测题答案613
编程项目616
第16章异常处理621
概述622
预备知识622
16.1异常处理基础623
16.1.1异常处理的一个玩具式
例子623
16.1.2定义自己的异常类629
16.1.3多个throw和catch630
16.1.4陷阱:首先捕捉较具体的异常632
16.1.5编程提示:异常类可能微不足道633
16.1.6在函数中抛出异常633
16.1.7异常规范634
16.1.8陷阱:派生类中的异常规范636
16.2用于异常处理的编程技术637
16.2.1抛出异常的时机637
16.2.2陷阱:未捕捉的异常638
16.2.3陷阱:嵌套的try-catch块638
16.2.4陷阱:滥用异常638
16.2.5异常类层次结构638
16.2.6测试可用内存639
16.2.7重新抛出异常639
小结640
自测题答案640
编程项目641
第17章模板643
概述644
预备知识644
17.1用于算法抽象的模板644
17.1.1函数模板645
17.1.2陷阱:编译器的复杂性648
17.1.3编程实例:一个泛化的排序函数649
17.1.4编程提示:如何定义模板652
17.1.5陷阱:为不恰当的类型使用模板652
17.2用于数据抽象的模板653
17.2.1类模板的语法653
17.2.2编程实例:一个数组类655
小结659
自测题答案659
编程项目661
第18章标准模板库663
概述664
预备知识664
18.1迭代器664
18.1.1using声明665
18.1.2迭代器的基础知识665
18.1.3陷阱:编译器问题669
18.1.4迭代器的种类670
18.1.5常量和可变迭代器672
18.1.6逆向迭代器673
18.1.7其他种类的迭代器675
18.2容器676
18.2.1顺序容器676
18.2.2陷阱:迭代器和移除元素679
18.2.3编程提示:容器中的类型定义679
18.2.4容器配接器stack和queue679
18.2.5关联容器set和map682
18.2.6效率问题686
18.3泛型算法688
18.3.1运行时间和大O表示法688
18.3.2容器访问运行时间691
18.3.3不可修改的序列算法692
18.3.4容器修改算法695
18.3.5set算法696
18.3.6排序算法697
小结698
自测题答案698
编程项目699
附录1C++关键字703
附录2操作符的优先级704
附录3ASCII字符集705
附录4部分库函数706
附录5内联函数710
附录6重载数据索引方括号711
附录7this指针712
附录8将操作符重载为成员操作符714
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价