C++程序设计陷阱

C++程序设计陷阱
作 者: Stephen Dewhurst 陈君
出版社: 中国青年出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: C++
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《C++程序设计陷阱》作者简介

内容简介

本书讨论了那些可能出现在所有C++代码中的基本错误,同样也详述了那些出现在C++语法、预处理、内存管理、多态性、类设计和类继承关系设计中可以出现的各种复杂错误。每一个错误和其所导致的错误结果将会结合错误发生的上下文仔细讲解,相应的解决办法也会详细地结合实例给出。作者Stephen C.Dewhurst提供给读者各种C++习惯用法和设计模式,用于产生解决共性问题的定制方法。读者还将学会更多的通常被误解了的高级编程和设计中用到的C++特性。总之,本书向读者展示了如何在充满各种危险的C++世界中自由航行,以及如何学会C++专家所必备的各种实践知识。Stephen C.Dewhurst曾经是贝尔实验室中第一批C++使用者的一员,他具有将近20年的C++应用经验,曾经用C++解决了诸多领域中的问题,如编译器设计、证券安全交易、电子商务以及嵌入式通讯等领域。他还是Programming in C++的作者之一,是C/C++ User Journal杂志的编辑,C++ Report杂志的专栏作家。同时,他还是两个C++编译器的开发者,以及大量C++编程文章的作者。

图书目录

第一章

基本问题

陷阱1:注释泛滥
陷阱2:魔数
陷阱3:全局变量
陷阱4:没有区分重载和默认初始化
陷阱5:误解引用
陷阱6:误解const
陷阱7:忽略基本语言细节
陷阱8:无法区分访问和可见性
陷阱9:使用糟糕的语言
陷阱10:忽略习惯用语
陷阱11:不必要的小聪...

语法

陷阱13:混淆数组/初始值
陷阱14:求值顺序不确定
陷阱15:优先级问题
陷阱16:for语句混乱
陷阱17:最长符号问题
陷阱18:创造性地排列声明说明符
陷阱19:函数/对象不明确
陷阱20:类型限定符迁移
陷阱21:自我初始化
陷阱22:Static和Extern类型...

预处理器

陷阱25:#define字面值
陷阱26:#define伪函数
陷阱27:滥用#if
陷阱28:断言的副作用

第4章

转换

陷阱29:通过void*转换
陷阱30:切割
陷阱31:误解指针到常量的转换
陷阱32:误解指向指针的指针到常量的转换
陷阱33:误解指向指针的指针到基类的转换
陷阱34:指向多维数组的指针问题
陷阱35:未经检查向下转换类型
陷阱36:误用转换运算符
陷阱37:无意之中的构造函数转换

初始化

陷阱47:混淆赋值/初始化
陷阱48:变量作用域的限定不正确
陷阱49:C++对复制操作的偏执
陷阱50:类对象的按位复制
陷阱51:在构造函数中混淆初始化和赋值
陷阱52:成员初始化列表的不一致排序
陷阱53:虚拟基类默认初始化
陷阱54:副本构造函数基类初始化
陷阱55:运行时静态初始化顺...

内存和资源管理

陷阱60:错误地区分标量和数组分配
陷阱61:检查内存分配错误
陷阱62:替换全局new和delete
陷阱63:混淆成员new和delete的作用域和激活
陷阱64:引发字符串字面值
陷阱65:不正确的异常机制
陷阱66:滥用局部地址
陷阱67:使用资源获取即初始化的失败
陷阱68:...

多态

陷阱69:类型代码
陷阱70:非虚拟基类析构函数
陷阱71:隐藏非虚拟函数
陷阱72:Template

Method过于灵活
陷阱73:重载虚拟函数
陷阱74:带有默认参数初始值的虚拟函数
陷阱75:在构造函数和析构函数中调用虚拟函数
陷阱76:虚拟赋值
陷阱77:没有区分重载、覆盖和隐藏
陷阱78:错误理解虚拟函数和覆盖
陷阱79:支配问题

第8章

类设计

陷阱80:Get/Set接口
陷阱81:定常和引用数据成员
陷阱82:没有理解定常成员函数的含义
陷阱83:没有区分聚合与“熟悉”
陷阱84:不正确的运算符重载
陷阱85:优先级和重载
陷阱86:友元与成员运算符
陷阱87:增量和减量运算符问题
陷阱88:误解模板化的复制操作

层次结构设计

陷阱89:类对象数组
陷阱90:不正确的容器替换
陷阱91:错误地理解受保护访问
陷阱92:为代码重用而使用公共继承
陷阱93:具体公共基类
陷阱94:错误使用退化层次结构
陷阱95:滥用继承
陷阱96:基于类型的控制结构
陷阱97:“宇宙”层次结构
陷阱98:提出对...