《C++语言99个常见编程错误》

《C++语言99个常见编程错误》 《C++语言99个常见编程错误》

  • 书名:《C++语言99个常见编程错误》:避免编码和设计中的常见问题
  • 分类:编程
  • 作者:Stephen C. Dewhurst
  • 出版社:清华大学出版社
  • 出版年:2009
  • 售价:39.00元
  • 装订:平装
  • 页码:275

《C++语言99个常见编程错误》 内容介绍:

本书是C++语言大师Stephen C. Dewhurst在多年教授C++课程中所遇到的常见错误的心得笔记之基础上编写而成的。本书所有章节都是从一个众所周知的、在日常编码或设计实践中经常遭遇的问题入手,先指出其不足,再对其背后思想中存在的合理与不合理之处深入剖析;最后取其精华弃其糟粕,给出一个简洁、通用、美轮美奂的方案,指出有关如何规避或纠正它们的建议,从而有助于C++软件工程师们避免重蹈前辈们的覆辙。

作者Stephen C. Dewhurst介绍:

Stephen C. Dewhurst是贝尔实验室里最早使用C++语言的人之一。他将C++应用于编译器设计、电子商务、嵌入式通信等领域已有18年以上的经验。他是“Programming in C++”一书的合作者,是“C/C++ Users Journal”杂志的编辑,是“C++ Report”的专栏作家。他是两个C++编译器的作者,发表过大量有关编译器设计和C++语言编程技巧的论文。

《C++语言99个常见编程错误》 目录大纲:

译者序
前言
致谢
第1章 基础问题 1
常见错误1:过分积极的注释 1
常见错误2:幻数 4
常见错误3:全局变量 5
常见错误4:未能区分函数重载和形式参数默认值 7
常见错误5:对引用的认识误区 9
常见错误6:对常量(性)的认识误区 12
常见错误7:无视基础语言的精妙之处 13
常见错误8:未能区分可访问性和可见性 18
常见错误9:使用糟糕的语言 22
常见错误10:无视(久经考验的)习惯用法 24
常见错误11:聪明反被聪明误 27
常见错误12:嘴上无毛,办事不牢 29
第2章 语法问题 31
常见错误13:数组定义和值初始化的语法形式混淆 31
常见错误14:捉摸不定的评估求值次序 32
常见错误15:(运算符)优先级问题 37
常见错误16:for语句引发的理解障碍 40
常见错误17:取大优先解析原则带来的问题 43
常见错误18:声明饰词次序的小聪明 44
常见错误19:“函数还是对象”的多义性 46
常见错误20:效果漂移的类型量化饰词 46
常见错误21:自反初始化 47
常见错误22:静态连接类型和外部连接类型 49
常见错误23:运算符函数名字查找的反常行为 50
常见错误24:晦涩难懂的operator -> 52
第3章 预处理器问题 55
常见错误25:使用#define定义的字面量 55
常见错误26:使用#define定义的伪函数(函数宏) 58
常见错误27:#if的滥用 60
常见错误28:断言(assert宏)的副作用 65
第4章 类型转换问题 69
常见错误29:以void *为类型转换的中介类型 69
常见错误30:截切问题 72
常见错误31:对目标类型为指涉物为常量的指针类型的类型转换的认识误区 75
常见错误32:对以指涉物为指向常量的指针类型的类型为目标类型的类型转换的认识误区 76
常见错误33:对以指涉物为指向基类类型的指针类型的类型为目标类型的类型转换的认识误区 79
常见错误34:指向多维数组的指针带来的问题 80
常见错误35:未经校验的向下转型 82
常见错误36:类型转换运算符的误用 83
常见错误37:始料未及的构造函数类型转换 87
常见错误38:在多继承条件下进行强制类型转换 90
常见错误39:对非完整类型做强制类型转换 92
常见错误40:旧式强制类型转换 93
常见错误41:静态强制类型转换 95
常见错误42:形式参数引发临时对象生成的初始化 97
常见错误43:临时对象的生存期 101
常见错误44:引用和临时对象 102
常见错误45:(动态强制类型转换运算符)dynamic_cast带来的多义性解析失败 106
常见错误46:对逆变性的误解 110
第5章 初始化问题 113
常见错误47:赋值与初始化混淆 113
常见错误48:位于非适当作用域的变量 116
常见错误49:未能意识到C++语言中复制操作的固守行为 119
常见错误50:按位复制的class对象 123
常见错误51:未能区分构造函数中的初始化和赋值 125
常见错误52:未能在成员初始化列表中保持次序一致性 127
常见错误53:对于虚基类(子对象)进行默认初始化 128
常见错误54:复制构造函数对基类子对象初始化的未预期行为 133
常见错误55:运行期静态初始化次序 136
常见错误56:直接与复制初始化 138
常见错误57:对参数的直接初始化 141
常见错误58:无视返回值优化 143
常见错误59:在构造函数中初始化静态(数据)成员 146
第6章 内存和资源管理问题 149
常见错误60:未能区分纯量与数组的内存分配机制 149
常见错误61:内存分配失败校验 152
常见错误62:(用自定义版本)替换全局的内存管理运算符(所调用的函数) 154
常见错误63:成员版本的operator new和operator delete的作用域和调用机制混淆 157
常见错误64:抛出字符串字面常量(作为异常对象) 158
常见错误65:未能正确理解和利用异常处理机制 161
常见错误66:滥用局部量地址 165
常见错误67:未能采用RAII(资源获取即初始化)习惯用法 169
常见错误68:对auto_ptr的误用 174
第7章 多态问题 177
常见错误69:类型特征码 177
常见错误70:将基类析构函数声明为非虚函数 182
常见错误71:对非虚(成员)函数的遮掩 186
常见错误72:(以)过分灵活的(方式滥用)模板方法设计模式 188
常见错误73:重载虚函数 190
常见错误74:为参数指定默认初始化物的虚函数 191
常见错误75:在构造函数和析构函数中调用虚函数 193
常见错误76:虚赋值 196
常见错误77:未能区分(函数的)重载、改写和遮掩 198
常见错误78:未能深入理解虚函数和改写的实现机制 203
常见错误79:支配原则议题 208
第8章 类型设计问题 211
常见错误80:取/设状态接口 211
常见错误81:常量和引用数据成员 214
常见错误82:未能理解常量成员函数 217
常见错误83:未能区分强聚合和弱聚合 221
常见错误84:非适当的运算符重载 226
常见错误85:(运算符)优先级和重载 229
常见错误86:友元与成员运算符 230
常见错误87:自增/自减运算符的问题 231
常见错误88:对模板化的复制操作的认识误区 235
第9章 继承谱系设计问题 239
常见错误89:持有class对象的数组 239
常见错误90:非适当的容器类型之可替换性 241
常见错误91:未能理解protected访问层级 244
常见错误92:为代码复用而以public方式继承 247
常见错误93:以public方式继承抽象类 251
常见错误94:未能运用继承谱系的退化形式 252
常见错误95:继承的滥用 252
常见错误96:依类型分派的控制结构 256
常见错误97:单根谱系 258
常见错误98:向class对象打探隐私 261
常见错误99:权能查询问题 264
中英文术语对照表 269


微信扫一扫关注公众号

0 个评论

要评论图书请先登录注册

你也许想看:

Practical CSS3

《Practical CSS3》

Mills, Chris..2012-7

“This book teaches how to use CSS3 to build cool, responsive ...”

Ext JS 4 First Look

《Ext JS 4 First Look》

Loiane Groner.Packt Publishing.2012-1-30

“A practical guide including examples of the new features in ...”

C++跨平台开发技术指南

《C++跨平台开发技术指南》

[美] Syd Logan.机械工业出版社.2009-1

“《C++跨平台开发技术指南》详细介绍c++语言的跨平台技术,包含的主要内容有:Netscape在向数百万Win.dows...”

Autotools

《Autotools》

John Calcote.No Starch Press.2010-7-20

“The GNU Autotools make it easy for developers to create soft...”

D程序设计语言

《D程序设计语言》

[美] Andrei Alexandrescu.人民邮电出版社.2013-6

“D语言是一种通用的系统和应用编程语言,它保持了生成高效代码以及直接访问操作系统API和硬件的能力。《D程序设计语言》是一...”

Python编程快速上手 让繁琐工作自动化

《Python编程快速上手 让繁琐工作自动化》

[美] Al Sweigart 斯维加特.人民邮电出版社.2016-6-1

“”

The Nature of Software Development

《The Nature of Software Development》

Ron Jeffries.Pragmatic Bookshelf.2015-3-1

“”

深入理解LINUX网络内幕

《深入理解LINUX网络内幕》

Christian Benvenuti.东南大学出版社.2006-5

“本书系统地阐述了网络的基本概念,并指导你如何用C语言实现。同时描述了Linux网络的全貌,解释了Linux代码是如何工作...”

Ruby Programming

《Ruby Programming》

高桥征义,后藤裕藏.电子工业出版社.2009-4

“《Ruby Programming:向Ruby之父学程序设计(第2版)》是为了让完全没有程序设计经验的读者也能灵活地使用...”

Android系统源代码情景分析(修订版)(含CD光盘1张)

《Android系统源代码情景分析(修订版)(含CD光盘1张)》

罗升阳 著.电子工业出版社.2016-1

“在内容上,《Android系统源代码情景分析(修订版)(含CD光盘1张)》结合使用情景,全面、深入、细致地分析了Andr...”

VTK图形图像开发进阶

《VTK图形图像开发进阶》

张晓东,罗火灵.机械工业出版社.2015-4

“本书系统地介绍了VTK基础知识与开发技术,帮助VTK用户从入门到进阶,快速进入项目实战。本书第1章是VTK概览,介绍VT...”

The Joy of Clojure

《The Joy of Clojure》

Michael Fogus,Chris Houser.Manning Publications.2011-4-4

“Clojure is a dynamic programming language that targets the J...”

学习Python(第5版)(影印版)

《学习Python(第5版)(影印版)》

Mark Lutz.东南大学出版社.2014-1

“《学习Python(第5版)(影印版)(套装共2册)》将让你获得针对核心Python语言的一次全面而又深入的介绍。基于作...”

Spring Batch 批处理框架

《Spring Batch 批处理框架》

刘相.电子工业出版社.2015-2

“本书全面、系统地介绍了批处理框架Spring Batch,通过详尽的实战示例向读者展示了Spring Batch框架对大...”

Swifter(第二版) : 100 个 Swift 2 开发必备 Tip

《Swifter(第二版) : 100 个 Swift 2 开发必备 Tip》

王巍.电子工业出版社.2015-11

“《Swifter(第二版):100个 Swift 2 开发必备 Tip》面向商业实战与技能进阶,内容与案例完全基于 Sw...”

Objective-C 2.0程序设计

《Objective-C 2.0程序设计》

Stephen G. Kochan.机械工业出版社.2009年9月

“本书是Objective-C领域的经典著作,对Objective-C进行了系统而全面的阐述,权威性毋庸置疑。全书共分为四...”

.NET本质论 第1卷:公共语言运行库

《.NET本质论 第1卷:公共语言运行库》

博克斯 (BoxDon).中国电力出版社.2004-1

“本书由10章组成,探讨了CLR即公共语言运行库,涵盖了基本类型、实例、方法调用和消息、AppDomain、安全、以及CL...”

Confident Ruby

《Confident Ruby》

Avdi Grimm..2013-10-22

“For many programmers, discovering Ruby is a revelation. They...”

MATLAB Demystified

《MATLAB Demystified》

David McMahon.McGraw-Hill Professional.2007-04-06

“Need to Learn MATLAB? Problem SOLVED! Get started using MATL...”

Swifter : 100 个 Swift 开发必备 Tip

《Swifter : 100 个 Swift 开发必备 Tip》

王巍 著.电子工业出版社.

“作者赴美参加了Apple 的WWDC 14,亲眼见证了Swift 的发布,并从这门语言正式诞生的第一分钟就开始学习和钻研...”