扫描二维码,下载手机APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038

C++覆辙录

综合评级:
★★★★★

定价:
¥69.00

作者:
杜赫斯特

出版社:
人民邮电

出版日期:
2016/04/01

页数:
330

ISBN:
9787115372598

书籍介绍

《C 覆辙录》是C 大师Stephen C. Dewhurst根据多年教授C 课程中所遇到的常见错误的心得笔记编写而成。

本书所有章节都从一个众所周知的、在日常编码或设计实践经常遭遇的问题入手,先指出其不足,再对其背后思想中存在的合理与不合理之处深入剖析,取其精华,去其糟粕,给出一个简洁、通用的方案,给出如何规避或纠正它们的建议,从而有助于C 软件工程师避免重蹈前辈的覆辙。

《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