C++覆辙录

C++覆辙录
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Stephen C.Dewhurst) ,
2016-04
版次: 1
ISBN: 9787115372598
定价: 69.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 330页
正文语种: 简体中文
原版书名: C++ Gotchas: Avoiding Common Problems in Coding and Design
12人买过
  •   《C++覆辙录》是C++大师Stephen C. Dewhurst根据多年教授C++课程中所遇到的常见错误的心得笔记编写而成。本书所有章节都从一个众所周知的、在日常编码或设计实践经常遭遇的问题入手,先指出其不足,再对其背后思想中存在的合理与不合理之处深入剖析,取其精华,去其糟粕,给出一个简洁、通用的方案,给出如何规避或纠正它们的建议,从而有助于C++软件工程师避免重蹈前辈的覆辙。  《C++覆辙录》适合具有一定C++编程经验的读者阅读。   Stephen C. Dewhurst是贝尔实验室里使用c++语言的人之一。他将c++应用于编译器设计、电子商务、嵌入式通信等领域已有18年以上的经验。他是“programming in c++”一书的合作者,是“c/c++users journal”杂志的编辑,是“c++ report”的专栏作家。他是两个c++编译器的作者,发表过大量有关编译器设计和c++语言编程技巧的论文。 第1章 基础问题 1
    常见错误1:过分积极的注释 1
    常见错误2:幻数 4
    常见错误3:全局变量 6
    常见错误4:未能区分函数重载和形参默认值 8
    常见错误5:对引用的认识误区 10
    常见错误6:对常量(性)的认识误区 14
    常见错误7:无视基础语言的精妙之处 15
    常见错误8:未能区分可访问性和可见性 20
    常见错误9:使用糟糕的语言 25
    常见错误10:无视(久经考验的)习惯用法 28
    常见错误11:聪明反被聪明误 32
    常见错误12:嘴上无毛,办事不牢 34
    第2章 语法问题 37
    常见错误13:数组定义和值初始化的语法形式混淆 37
    常见错误14:捉摸不定的评估求值次序 38
    常见错误15:(运算符)优先级问题 44
    常见错误16:for语句引发的理解障碍 48
    常见错误17:取大优先解析原则带来的问题 52
    常见错误18:声明饰词次序的小聪明 53
    常见错误19:“函数还是对象”的多义性 55
    常见错误20:效果漂移的型别量化饰词 56
    常见错误21:自反初始化 57
    常见错误22:静态连接型别和外部连接型别 59
    常见错误23:运算符函数名字查找的反常行为 60
    常见错误24:晦涩难懂的operator -> 63
    第3章 预处理器问题 65
    常见错误25:使用#define定义的字面量 65
    常见错误26:使用#define定义的伪函数(函数宏) 68
    常见错误27:#if的滥用 70
    常见错误28:断言(assert宏)的副作用 76
    第4章 型别转换问题 79
    常见错误29:以void *为型别转换的中介型别 79
    常见错误30:截切问题 83
    常见错误31:对目标型别为指涉物为常量的指针型别的型别转换的
    认识误区 86
    常见错误32:对以指涉物为指涉到常量的指针型别的型别为目标型别的
    型别转换的认识误区 87
    常见错误33:对以指涉物为指涉到基类型别的指针型别的型别为目标型
    别的型别转换的认识误区 92
    常见错误34:指涉到多维数组的指针带来的问题 93
    常见错误35:未经校验的向下转型 95
    常见错误36:型别转换运算符的误用 96
    常见错误37:始料未及的构造函数型别转换 101
    常见错误38:在多继承条件下进行强制型别转换 104
    常见错误39:对非完整型别做强制型别转换 106
    常见错误40:旧式强制型别转换 108
    常见错误41:静态强制型别转换 109
    常见错误42:形参引发临时对象生成的初始化 112
    常见错误43:临时对象的生存时域 116
    常见错误44:引用和临时对象 119
    常见错误45:动态强制型别转换运算符dynamic_cast带来的多义性解析
    失败 122
    常见错误46:对逆变性的误解 127
    第5章 初始化问题 131
    常见错误47:赋值与初始化混淆 131
    常见错误48:位于非适当辖域的变量 135
    常见错误49:未能意识到C++语言中复制操作的固守行为 138
    常见错误50:按位复制的class对象 143
    常见错误51:未能区分构造函数中的初始化和赋值 145
    常见错误52:未能在成员初始化列表中保持次序一致性 147
    常见错误53:对于虚基类(子对象)进行默认初始化 149
    常见错误54:复制构造函数对基类子对象初始化的未预期行为 155
    常见错误55:运行期静态初始化次序 158
    常见错误56:直接vs. 复制初始化 161
    常见错误57:对实参的直接初始化 164
    常见错误58:无视返回值优化 166
    常见错误59:在构造函数中初始化静态数据成员 170
    第6章 内存和资源管理问题 175
    常见错误60:未能区分纯量与数组的内存分配机制 175
    常见错误61:内存分配失败校验 179
    常见错误62:用自定义版本替换全局的内存管理运算符所调用的函数 181
    常见错误63:成员版本的operator new和operator delete的辖域和
    调用机制混淆 185
    常见错误64:抛出字符串字面常量作为异常对象 186
    常见错误65:未能正确理解和利用异常处理机制 189
    常见错误66:滥用局部量地址 193
    常见错误67:未能采用RAII习惯用法 198
    常见错误68:对auto_ptr的误用 204
    第7章 多态问题 207
    常见错误69:型别特征码 207
    常见错误70:将基类析构函数声明为非虚函数 213
    常见错误71:对非虚成员函数的遮掩 218
    常见错误72:以过分灵活的方式滥用模板方法设计模式 222
    常见错误73:重载虚函数 223
    常见错误74:为实参指定默认初始化物的虚函数 225
    常见错误75:在构造函数和析构函数中调用虚函数 227
    常见错误76:虚赋值 230
    常见错误77:未能区分函数的重载、改写和遮掩 233
    常见错误78:未能深入理解虚函数和改写的实现机制 239
    常见错误79:支配原则议题 247
    第8章 型别设计问题 251
    常见错误80:取/设状态接口 251
    常见错误81:常量和引用数据成员 255
    常见错误82:未能理解常量成员函数 258
    常见错误83:未能区分强聚合和弱聚合 262
    常见错误84:非适当的运算符重载 268
    常见错误85:运算符优先级和重载 271
    常见错误86:友元vs.成员运算符 272
    常见错误87:自增/自减运算符的问题 273
    常见错误88:对模板化的复制操作的认识误区 277
    第9章 继承谱系设计问题 281
    常见错误89:持有class对象的数组 281
    常见错误90:非适当的容器型别之可替换性 283
    常见错误91:未能理解protected访问层级 287
    常见错误92:为代码复用而以public方式继承 291
    常见错误93:以public方式继承具象类 295
    常见错误94:未能运用继承谱系的退化形式 296
    常见错误95:继承的滥用 297
    常见错误96:依型别分派的控制结构 301
    常见错误97:单根谱系 304
    常见错误98:向class对象打探隐私 308
    常见错误99:权能查询问题 311
    中英文对照表 317
    引用书目 327
  • 内容简介:
      《C++覆辙录》是C++大师Stephen C. Dewhurst根据多年教授C++课程中所遇到的常见错误的心得笔记编写而成。本书所有章节都从一个众所周知的、在日常编码或设计实践经常遭遇的问题入手,先指出其不足,再对其背后思想中存在的合理与不合理之处深入剖析,取其精华,去其糟粕,给出一个简洁、通用的方案,给出如何规避或纠正它们的建议,从而有助于C++软件工程师避免重蹈前辈的覆辙。  《C++覆辙录》适合具有一定C++编程经验的读者阅读。
  • 作者简介:
      Stephen C. Dewhurst是贝尔实验室里使用c++语言的人之一。他将c++应用于编译器设计、电子商务、嵌入式通信等领域已有18年以上的经验。他是“programming in c++”一书的合作者,是“c/c++users journal”杂志的编辑,是“c++ report”的专栏作家。他是两个c++编译器的作者,发表过大量有关编译器设计和c++语言编程技巧的论文。
  • 目录:
    第1章 基础问题 1
    常见错误1:过分积极的注释 1
    常见错误2:幻数 4
    常见错误3:全局变量 6
    常见错误4:未能区分函数重载和形参默认值 8
    常见错误5:对引用的认识误区 10
    常见错误6:对常量(性)的认识误区 14
    常见错误7:无视基础语言的精妙之处 15
    常见错误8:未能区分可访问性和可见性 20
    常见错误9:使用糟糕的语言 25
    常见错误10:无视(久经考验的)习惯用法 28
    常见错误11:聪明反被聪明误 32
    常见错误12:嘴上无毛,办事不牢 34
    第2章 语法问题 37
    常见错误13:数组定义和值初始化的语法形式混淆 37
    常见错误14:捉摸不定的评估求值次序 38
    常见错误15:(运算符)优先级问题 44
    常见错误16:for语句引发的理解障碍 48
    常见错误17:取大优先解析原则带来的问题 52
    常见错误18:声明饰词次序的小聪明 53
    常见错误19:“函数还是对象”的多义性 55
    常见错误20:效果漂移的型别量化饰词 56
    常见错误21:自反初始化 57
    常见错误22:静态连接型别和外部连接型别 59
    常见错误23:运算符函数名字查找的反常行为 60
    常见错误24:晦涩难懂的operator -> 63
    第3章 预处理器问题 65
    常见错误25:使用#define定义的字面量 65
    常见错误26:使用#define定义的伪函数(函数宏) 68
    常见错误27:#if的滥用 70
    常见错误28:断言(assert宏)的副作用 76
    第4章 型别转换问题 79
    常见错误29:以void *为型别转换的中介型别 79
    常见错误30:截切问题 83
    常见错误31:对目标型别为指涉物为常量的指针型别的型别转换的
    认识误区 86
    常见错误32:对以指涉物为指涉到常量的指针型别的型别为目标型别的
    型别转换的认识误区 87
    常见错误33:对以指涉物为指涉到基类型别的指针型别的型别为目标型
    别的型别转换的认识误区 92
    常见错误34:指涉到多维数组的指针带来的问题 93
    常见错误35:未经校验的向下转型 95
    常见错误36:型别转换运算符的误用 96
    常见错误37:始料未及的构造函数型别转换 101
    常见错误38:在多继承条件下进行强制型别转换 104
    常见错误39:对非完整型别做强制型别转换 106
    常见错误40:旧式强制型别转换 108
    常见错误41:静态强制型别转换 109
    常见错误42:形参引发临时对象生成的初始化 112
    常见错误43:临时对象的生存时域 116
    常见错误44:引用和临时对象 119
    常见错误45:动态强制型别转换运算符dynamic_cast带来的多义性解析
    失败 122
    常见错误46:对逆变性的误解 127
    第5章 初始化问题 131
    常见错误47:赋值与初始化混淆 131
    常见错误48:位于非适当辖域的变量 135
    常见错误49:未能意识到C++语言中复制操作的固守行为 138
    常见错误50:按位复制的class对象 143
    常见错误51:未能区分构造函数中的初始化和赋值 145
    常见错误52:未能在成员初始化列表中保持次序一致性 147
    常见错误53:对于虚基类(子对象)进行默认初始化 149
    常见错误54:复制构造函数对基类子对象初始化的未预期行为 155
    常见错误55:运行期静态初始化次序 158
    常见错误56:直接vs. 复制初始化 161
    常见错误57:对实参的直接初始化 164
    常见错误58:无视返回值优化 166
    常见错误59:在构造函数中初始化静态数据成员 170
    第6章 内存和资源管理问题 175
    常见错误60:未能区分纯量与数组的内存分配机制 175
    常见错误61:内存分配失败校验 179
    常见错误62:用自定义版本替换全局的内存管理运算符所调用的函数 181
    常见错误63:成员版本的operator new和operator delete的辖域和
    调用机制混淆 185
    常见错误64:抛出字符串字面常量作为异常对象 186
    常见错误65:未能正确理解和利用异常处理机制 189
    常见错误66:滥用局部量地址 193
    常见错误67:未能采用RAII习惯用法 198
    常见错误68:对auto_ptr的误用 204
    第7章 多态问题 207
    常见错误69:型别特征码 207
    常见错误70:将基类析构函数声明为非虚函数 213
    常见错误71:对非虚成员函数的遮掩 218
    常见错误72:以过分灵活的方式滥用模板方法设计模式 222
    常见错误73:重载虚函数 223
    常见错误74:为实参指定默认初始化物的虚函数 225
    常见错误75:在构造函数和析构函数中调用虚函数 227
    常见错误76:虚赋值 230
    常见错误77:未能区分函数的重载、改写和遮掩 233
    常见错误78:未能深入理解虚函数和改写的实现机制 239
    常见错误79:支配原则议题 247
    第8章 型别设计问题 251
    常见错误80:取/设状态接口 251
    常见错误81:常量和引用数据成员 255
    常见错误82:未能理解常量成员函数 258
    常见错误83:未能区分强聚合和弱聚合 262
    常见错误84:非适当的运算符重载 268
    常见错误85:运算符优先级和重载 271
    常见错误86:友元vs.成员运算符 272
    常见错误87:自增/自减运算符的问题 273
    常见错误88:对模板化的复制操作的认识误区 277
    第9章 继承谱系设计问题 281
    常见错误89:持有class对象的数组 281
    常见错误90:非适当的容器型别之可替换性 283
    常见错误91:未能理解protected访问层级 287
    常见错误92:为代码复用而以public方式继承 291
    常见错误93:以public方式继承具象类 295
    常见错误94:未能运用继承谱系的退化形式 296
    常见错误95:继承的滥用 297
    常见错误96:依型别分派的控制结构 301
    常见错误97:单根谱系 304
    常见错误98:向class对象打探隐私 308
    常见错误99:权能查询问题 311
    中英文对照表 317
    引用书目 327
查看详情
相关图书 / 更多
C++覆辙录
C++程序设计基础教程 第2版
刘厚泉 李政伟 葛欣
C++覆辙录
C++那些事
程克非,张兴,崔晓通,秦蔚蓉
C++覆辙录
C++编程这样学
胡芳
C++覆辙录
C++程序设计案例教程(线上线下混合版)
杨卫明;李晓虹
C++覆辙录
C++之旅(第3版)
[美]Bjarne Stroustrup(本贾尼 斯特劳斯特鲁普
C++覆辙录
C++高性能编程
(瑞典)比约恩 安德里斯特(Bj.rn Andrist),(瑞典)维克托 塞尔(Viktor Sehr)
C++覆辙录
C++ Core Guidelines解析
杨文波 译;[德]赖纳·格林(Rainer Grimm)著 吴咏炜;何荣华;张云潮
C++覆辙录
C++开发案例精讲
杨国兴 著
C++覆辙录
C++程序设计实践教程(新国标微课版)
马光志
C++覆辙录
C++程序设计基础与实践
牛园园;韩洁琼;李晓芳;吴成宇
C++覆辙录
C++语言设计教程(计算机专业十四五精品教材)
苏菲、王芬、朱腾 编
C++覆辙录
C++程序设计基础教程
丁卫平 程学云 陈文兰 主编;任红建 沈晓红 文万志 副主编